给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal
思路:一层一层的遍历树,可以利用宽搜,一层一层的搜索
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.size()){
int k=q.size();
vector<int> level;
for(int i=0;i<k;++i){//每次遍历一层
auto p=q.front();
q.pop();
level.push_back(p->val);
if(p->left)q.push(p->left);//把下一层放进去
if(p->right)q.push(p->right);
}
res.push_back(level);
}
return res;
}
};