leetcode 429. N叉树的层序遍历 easy
题目描述:
给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。
例如,给定一个 3叉树 :
返回其层序遍历:
[
[1],
[3,2,4],
[5,6]
]
解题思路:
一般的层序,用1个循环,每次把当前pop的节点的各个儿子加进来。
需要按层输出的层序,用2个循环,大循环的逻辑是把当前队列的所有节点都pop干净,内部循环的逻辑是加入每个节点的儿子
代码:
/*
// Definition for a Node.
class Node {
public:
int val;
vector<Node*> children;
Node() {}
Node(int _val, vector<Node*> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
if(root == nullptr)
return {};
vector<vector<int>> res;
queue<Node *> q1{{root}};
Node *cur=nullptr;
while(q1.size()){
vector<int> onelevel;
for(int i=q1.size();i>0;--i){
cur=q1.front();
q1.pop();
onelevel.push_back(cur->val);
for(auto j:cur->children){
q1.push(j);
}
}
res.push_back(onelevel);
}
return res;
}
};