生成递归实现二叉树层次遍历的c++代码
时间: 2023-08-05 08:19:10 浏览: 149
好的,下面是一份使用递归实现二叉树层次遍历的 C++ 代码:
```c++
#include <iostream>
#include <queue>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
void levelOrder(TreeNode* root, int level, vector<vector<int>>& res) {
if (!root) return;
if (level >= res.size()) {
res.push_back(vector<int>());
}
res[level].push_back(root->val);
levelOrder(root->left, level + 1, res);
levelOrder(root->right, level + 1, res);
}
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
levelOrder(root, 0, res);
return res;
}
int main() {
TreeNode* root = new TreeNode(3);
root->left = new TreeNode(9);
root->right = new TreeNode(20);
root->right->left = new TreeNode(15);
root->right->right = new TreeNode(7);
vector<vector<int>> res = levelOrder(root);
for (vector<int> level : res) {
for (int val : level) {
cout << val << " ";
}
cout << endl;
}
return 0;
}
```
这段代码首先定义了一个 TreeNode 结构体来表示二叉树的节点。然后定义了一个 levelOrder 函数,使用递归来实现层次遍历,并将结果存入一个二维数组 res 中。最后在 main 函数中创建一个二叉树,并输出遍历结果。
需要注意的是,这个代码中的 levelOrder 函数使用了一个辅助参数 level 来表示当前遍历的层数,以及一个二维数组 res 来存储遍历结果。由于递归过程中需要对 res 进行修改,因此这里使用了引用传递。
阅读全文