用递归法实现二叉树的层序遍历
时间: 2023-12-01 15:58:56 浏览: 29
递归法并不适合实现二叉树的层序遍历,因为层序遍历需要借助队列来实现,而递归法并没有队列的概念。因此,下面给出的是使用队列来实现二叉树的层序遍历的代码:
```
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
if (!root) return res;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
int size = q.size();
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);
}
res.push_back(level);
}
return res;
}
};
```
这里使用了一个队列来存储每一层的节点,并在遍历每一层时将该层的节点存入一个 vector 中,最终将所有 vector 存入一个二维 vector 中返回。