题目
1、题目描述
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
示例 1:
输入:root = [1,null,3,2,4,null,5,6]
输出:[[1],[3,2,4],[5,6]]
2、原题链接
解题报告
1、解题思路
(
1
)
(1)
(1) 将节点入队。每次访问,将节点值存入临时数组,并将当前节点的孩子入队并记录下一层孩子节点bck
的个数。
(
2
)
(2)
(2) cnt = 0
当前层访问完毕。cnt = bck
并将当前层节点值加入要返回的数组。
2、解题方法
2、代码详解
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
vector<vector<int>> ret;
vector<int> p;
int cnt, bck;
cnt = 1;
bck = 0;
queue<Node*> q;
if(!root){
return ret;
}
q.push(root);
while(!q.empty()){
Node* a = q.front();
q.pop();
cnt--;
p.push_back(a->val);
for(int i = 0; i < a->children.size(); ++i){
q.push(a->children[i]);
++bck;
}
if(cnt == 0){
ret.push_back(p);
p.clear();
cnt = bck;
bck = 0;
}
}
return ret;
}
};
总结
注意空树的情况!