二叉树的层次遍历c++bfs
时间: 2023-11-27 11:40:19 浏览: 120
二叉树的层次遍历-C++实现
二叉树的层次遍历是一种广度优先搜索的算法,通过逐层遍历二叉树的节点来获取每一层的节点值。具体实现可以使用队列来辅助遍历。首先将根节点入队,然后开始循环,每次循环中先记录当前队列的大小,然后依次出队该层的节点,并将出队节点的值存入一个临时数组中,同时将该节点的左右子节点(如果存在)入队。循环结束后,将临时数组存入结果数组中,直到队列为空。最终返回结果数组即为二叉树的层次遍历结果。
代码实现如下:
```c++
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
queue<TreeNode*> que;
vector<vector<int>> res;
if (root != nullptr) {
que.push(root);
}
while (!que.empty()) {
int size = que.size();
vector<int> vec;
for (int i = 0; i < size; i++) {
TreeNode* node = que.front();
que.pop();
vec.push_back(node->val);
if (node->left) {
que.push(node->left);
}
if (node->right) {
que.push(node->right);
}
}
res.push_back(vec);
}
return res;
}
};
```
阅读全文