429. N-ary Tree Level Order Traversal
题目
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
.
解决
假设树有n个节点。
- 时间复杂度:O(n)
- 空间复杂度:O(n)
/*
// 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> > result;
if (!root) return result;
queue<Node*> tree;
tree.push(root);
while (!tree.empty()) {
vector<int> node(tree.size());
for (int i = 0; i < node.size(); i++) {
Node* temp = tree.front();
node[i] = temp->val;
for (auto n : temp->children) {
tree.push(n);
}
tree.pop();
}
result.push_back(node);
}
return result;
}
};