栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++实现二叉树的层序遍历

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++实现二叉树的层序遍历

#include 
#include 
#include 
using namespace std;
struct TreeNode {
    int value;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int value, TreeNode *left, TreeNode *right)
    :value(value), left(left), right(right) {}
};
// 这里不考虑内存释放问题
class BinaryTree {
public:
    BinaryTree() {}

    void constructATree() {
        root = new TreeNode(1, nullptr, nullptr);
        root->left = new TreeNode(2, new TreeNode(3, nullptr, nullptr), new TreeNode(4, nullptr, nullptr));
        root->right = new TreeNode(5, new TreeNode(6, nullptr, nullptr), new TreeNode(7, nullptr, nullptr));
    }

    void bfs(function func) {
        auto q = queue();
        q.push(root);
        while(!q.empty()) {
            auto head = q.front();
            q.pop();
            func(head->value);

            if(head->left != nullptr) {
                q.push(head->left);
            }
            if(head->right != nullptr) {
                q.push(head->right);
            }
        }
    }
private:
    TreeNode *root;
};

int main(int argc, char *argv[]) {
    auto t = BinaryTree();
    t.constructATree();
    cout << "开始层序遍历(BFS)" << endl;
    t.bfs([=](int value) {
        cout << value << " -> ";
    });
    cout << endl << "遍历完毕" << endl;
    return 0;
}

编译运行

$ clang++ -o test 二叉树层序遍历.cxx -std=c++11
$ ./test

输出

开始层序遍历(BFS)
1 -> 2 -> 5 -> 3 -> 4 -> 6 -> 7 -> 
遍历完毕
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号