给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
解答:
/*
// Definition for a Node.
class Node {
public:
int val;
vector<Node*> children;
Node() {}
Node(int _val) {
val = _val;
}
Node(int _val, vector<Node*> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
vector<vector<int>> ans;
if(!root) return ans;
queue<Node*> level;
level.push(root);
while(!level.empty()){
vector<int> res;
int cnt = level.size();
for(int i = 0; i < cnt; i++){
Node* tmp = level.front();
level.pop();
res.push_back(tmp->val);
for(auto ch : tmp->children){
level.push(ch);
}
}
ans.push_back(res);
}
return ans;
}
};