层次遍历建立二叉树c++
时间: 2024-06-16 16:02:06 浏览: 163
层次遍历,也称为广度优先遍历(Breadth-First Search, BFS),是一种用于访问或搜索树和图中节点的有效方法。在二叉树中,层次遍历按照从上到下、从左到右的顺序依次访问每个节点,类似于打印一棵树的层级结构。
在C++中,使用队列来实现层次遍历,步骤如下:
1. 创建一个队列,将根节点入队。
2. 当队列不为空时,执行以下操作:
a. 弹出队首元素作为当前节点。
b. 访问当前节点。
c. 将当前节点的左右子节点(如果存在)依次入队。
3. 重复步骤2,直到队列为空。
以下是一个简单的C++代码示例,假设我们有一个名为`Node`的二叉树节点类:
```cpp
#include <iostream>
#include <queue>
// 假设Node类有一个整型值和两个指向子节点的指针
class Node {
public:
int val;
Node* left;
Node* right;
Node(int val = 0, Node* left = nullptr, Node* right = nullptr) : val(val), left(left), right(right) {}
};
void levelOrderTraversal(Node* root) {
if (root == nullptr) return; // 如果根节点为空,直接返回
std::queue<Node*> q; // 定义队列
q.push(root); // 将根节点入队
while (!q.empty()) {
Node* 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() {
// 创建并初始化二叉树
Node* tree = ...; // 用实际的节点构建树
levelOrderTraversal(tree);
return 0;
}
```
阅读全文