Description
Given an n-ary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).
For example, given a 3-ary tree:
We should return its level order traversal:
[
[1],
[3,2,4],
[5,6]
]
Note:
The depth of the tree is at most 1000.
The total number of nodes is at most 5000.
Solution
- 解决思路
这道题是要求N叉树每一层的数组,并输出,由题意很容易想到这是层次遍历,借助队列实现即可。 - AC代码
/*
// Definition for a Node.
class Node {
public:
int val = NULL;
vector<Node*> children;
Node() {}
Node(int _val, vector<Node*> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
vector<vector<int>> res;
if(!root) return res;
queue<Node*> q;
q.push(root);
while(!q.empty()){
vector<int> tmp;
int n = q.size();
for(int i = 0; i < n; i++){
Node* t = q.front();
tmp.push_back(t->val);
q.pop();
for(int j = 0; j < t->children.size(); j++){
q.push(t->children[j]);
}
}
res.push_back(tmp);
}
return res;
}
};