在C++和Python中实现二叉树的层次遍历,具体步骤有哪些?请结合实际代码示例进行说明。
时间: 2024-10-30 12:16:24 浏览: 26
二叉树的层次遍历是一种重要的树结构遍历方法,主要利用队列这一数据结构来实现非递归遍历。通过逐层访问节点,我们可以获得树的结构化信息,这对于构建层次结构非常关键。以下是C++和Python实现二叉树层次遍历的具体步骤和代码示例:
参考资源链接:[Python与C++实现:二叉树层次遍历及其代码示例](https://wenku.csdn.net/doc/87zgdhjxh4?spm=1055.2569.3001.10343)
C++实现步骤:
1. 定义二叉树节点结构`TreeNode`。
2. 实现`levelOrder`函数,使用队列存储每一层的节点。
3. 遍历队列,按照层次顺序处理每个节点。
示例代码如下:
```cpp
#include <iostream>
#include <queue>
#include <vector>
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
std::vector<std::vector<int>> levelOrder(TreeNode* root) {
std::vector<std::vector<int>> result;
if (root == nullptr) return result;
std::queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
int size = q.size();
std::vector<int> level;
for (int i = 0; i < size; ++i) {
TreeNode* node = q.front();
q.pop();
level.push_back(node->val);
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
result.push_back(level);
}
return result;
}
int main() {
// 示例:构建二叉树
TreeNode* root = new TreeNode(3);
root->left = new TreeNode(9);
// ... 构建其他节点
std::vector<std::vector<int>> result = levelOrder(root);
for (const auto& level : result) {
for (int val : level) {
std::cout << val <<
参考资源链接:[Python与C++实现:二叉树层次遍历及其代码示例](https://wenku.csdn.net/doc/87zgdhjxh4?spm=1055.2569.3001.10343)
阅读全文