C++实现二叉树层序遍历
时间: 2024-11-24 18:08:52 浏览: 0
在C++中,层序遍历(也叫层次遍历)是一种广度优先搜索(BFS)的方式,用于访问二叉树的所有节点。这里有一个基本的迭代法实现:
```cpp
#include <iostream>
#include <queue>
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void levelOrderTraversal(TreeNode* root) {
if (root == nullptr) return;
std::queue<TreeNode*> q; // 创建一个队列存储节点
q.push(root);
while (!q.empty()) {
int size = q.size(); // 当前层的节点数
for (int i = 0; i < size; ++i) {
TreeNode* node = q.front();
q.pop();
// 输出当前节点的值
std::cout << node->val << " ";
// 将当前节点的左右子节点加入队列,如果存在的话
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
std::cout << "\n"; // 每一层结束后换行
}
}
int main() {
// 创建并初始化一个示例二叉树...
TreeNode* tree = ...;
levelOrderTraversal(tree);
return 0;
}
```
在这个例子中,我们创建了一个队列,并将根节点放入队列。然后进入一个循环,每次从队列中取出一个节点,访问它的值,再将其左右子节点加入队列。这样就可以保证按照层的顺序依次访问所有节点。
阅读全文