层级遍历
一、二叉树层级遍历,即广度优先遍历(BFS)
如下图所示,将每一层的元素进行逐个遍历。
二、例题
力扣102题:
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
3
/ \
9 20
/ \
15 7
示例:
二叉树:[3,9,20,null,null,15,7],
返回其层序遍历结果:
[
[3],
[9,20],
[15,7]
]
答案:
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
queue<TreeNode*> que; //队列,用来存储每一层的节点
if(root!=nullptr) que.push(root); //根节点入队
vector<vector<int>> res; //二维数组,最终返回结果
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;
}
};