提供C++代码实现以二叉链表作存储结构,编写层次顺序遍历二叉树的算法方法
时间: 2024-12-24 21:42:39 浏览: 9
用顺序和二叉链表作存储结构实现二叉排序树
5星 · 资源好评率100%
在C++中,我们可以使用广度优先搜索(Breadth-First Search, BFS)算法来按层次顺序遍历二叉树。对于二叉链表存储的二叉树,我们需要维护一个队列来存储当前层的所有节点,然后逐层处理。以下是一个简单的C++代码实现:
```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 = new TreeNode(1);
tree->left = new TreeNode(2);
tree->right = new TreeNode(3);
tree->left->left = new TreeNode(4);
tree->left->right = new TreeNode(5);
levelOrderTraversal(tree); // 遍历并打印层次顺序
return 0;
}
```
这个程序首先检查根节点是否为空,如果空则直接返回。然后创建一个队列并将根节点放入。接着进入一个循环,直到队列不为空。每次循环,我们先获取当前层的节点数量,然后对每个节点进行操作:输出其值、将其左右子节点(如果有)入队,完成后换行开始下一层。
阅读全文