输出二叉树的层次遍历序列完整c++代码
时间: 2024-12-19 21:26:05 浏览: 4
在C++中,二叉树的层次遍历通常采用广度优先搜索(BFS)策略。以下是一个使用队列实现的示例,它会按照从上到下、从左到右的顺序输出每一层的节点:
```cpp
#include <iostream>
#include <queue>
// 定义二叉树节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 层次遍历函数
std::vector<std::vector<int>> levelOrderTraversal(TreeNode* root) {
if (root == nullptr) return {};
std::vector<std::vector<int>> result; // 存储结果
std::queue<TreeNode*> q; // 队列用于存储节点
q.push(root);
while (!q.empty()) {
int size = q.size();
std::vector<int> layer; // 当前层的节点值
for (int i = 0; i < size; ++i) {
TreeNode* node = q.front(); // 取出队首节点
q.pop();
layer.push_back(node->val); // 添加节点值到当前层
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
result.push_back(layer); // 将当前层添加到结果列表
}
return result;
}
// 示例用法
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);
auto levels = levelOrderTraversal(root);
for (const auto& level : levels) {
for (int val : level) {
std::cout << val << " ";
}
std::cout << "\n";
}
return 0;
}
```
阅读全文