c++ 二叉树按层遍历的过程
时间: 2023-11-03 10:05:56 浏览: 72
二叉树按层遍历的过程,也叫做广度优先遍历,可以使用队列来实现。
具体步骤如下:
1. 首先将根节点入队。
2. 当队列不为空时,依次进行如下操作:
- 弹出队首元素,并输出该元素的值。
- 如果该元素有左子树,则将左子树入队。
- 如果该元素有右子树,则将右子树入队。
3. 遍历完成后,队列中没有元素,算法结束。
示例代码如下:
```c++
#include <iostream>
#include <queue>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void levelOrder(TreeNode* root) {
if (root == NULL) {
return;
}
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* cur = q.front();
q.pop();
cout << cur->val << " ";
if (cur->left) {
q.push(cur->left);
}
if (cur->right) {
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);
root->right->left = new TreeNode(6);
root->right->right = new TreeNode(7);
cout << "按层遍历结果:";
levelOrder(root);
return 0;
}
```
输出结果为:1 2 3 4 5 6 7
阅读全文