c++ 二叉树的层序遍历
时间: 2023-08-06 20:06:59 浏览: 63
二叉树的层序遍历可以通过广度优先搜索(BFS)实现。具体实现步骤如下:
1. 创建一个队列,将根节点入队。
2. 循环执行以下步骤,直到队列为空:
- 取出队首元素,输出该元素的值。
- 如果该元素有左子节点,将左子节点入队。
- 如果该元素有右子节点,将右子节点入队。
下面是 C++ 的实现代码:
```c++
#include <iostream>
#include <queue>
using namespace std;
// 二叉树节点的定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 层序遍历函数
void levelOrder(TreeNode* root) {
if (root == nullptr) return; // 处理空树的情况
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* cur = q.front();
q.pop();
cout << cur->val << " ";
if (cur->left != nullptr) q.push(cur->left);
if (cur->right != nullptr) q.push(cur->right);
}
}
// 测试
int main() {
// 创建一棵二叉树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
// 层序遍历
levelOrder(root);
return 0;
}
```
输出结果为:1 2 3 4 5。
阅读全文