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.
// OJ: https://leetcode.com/problems/n-ary-tree-level-order-traversal/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(N)
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
if (!root) return {};
queue<Node*> q;
q.push(root);
vector<vector<int>> ans;
while (q.size()) {
int cnt = q.size();
vector<int> level;
while (cnt--) {
root = q.front();
q.pop();
level.push_back(root->val);
for (Node *node : root->children) q.push(node);
}
ans.push_back(level);
}
return ans;
}
};