二叉树的层次遍历怎么用queue的头文件实现
时间: 2024-12-28 18:40:53 浏览: 11
二叉树的层次遍历,也叫广度优先搜索(BFS),通常使用队列(Queue)来辅助实现。以下是使用标准库中的`queue`模板类(如C++中的`std::queue`)来完成这种遍历的基本步骤:
```cpp
#include <iostream>
#include <queue> // 引入队列头文件
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void levelOrder(TreeNode* root) {
if (root == nullptr) return;
std::queue<TreeNode*> q; // 创建一个队列用于存储节点
q.push(root); // 将根节点放入队列
while (!q.empty()) { // 当队列非空时继续循环
TreeNode* node = q.front(); // 取出队首元素
q.pop(); // 出队
std::cout << node->val << " "; // 访问当前节点值
// 如果有左、右孩子,则将他们加入队列
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
}
int main() {
// 假设这里已经有一个二叉树实例
TreeNode* root = ...;
levelOrder(root);
return 0;
}
```
在这个例子中,我们首先检查根节点是否为空,然后创建一个队列并将根节点入队。接着,我们在一个循环中不断取出队首节点,访问其值,并将其左右子节点(如果存在)依次入队。这样,每次都会先处理同一层的所有节点,然后再进入下一层。
阅读全文