C++实现二叉树的层序遍历
2021/11/7 14:10:07
本文主要是介绍C++实现二叉树的层序遍历,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <iostream> #include <queue> #include <functional> 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<void(int)> func) { auto q = queue<TreeNode*>(); 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 -> 遍历完毕
这篇关于C++实现二叉树的层序遍历的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升