https://leetcode.com/problems/n-ary-tree-level-order-traversal/

1. Use recursion:

  1. //44 ms 11.7 MB
  2. /*
  3. // Definition for a Node.
  4. class Node {
  5. public:
  6. int val;
  7. vector<Node*> children;
  8. Node() {}
  9. Node(int _val) {
  10. val = _val;
  11. }
  12. Node(int _val, vector<Node*> _children) {
  13. val = _val;
  14. children = _children;
  15. }
  16. };
  17. */
  18. class Solution {
  19. public:
  20. vector<vector<int>> levelOrder(Node* root) {
  21. vector<vector<int>> result;
  22. preorder(root, result, 1);
  23. return result;
  24. }
  25. private:
  26. void preorder(Node* root, vector<vector<int>>& result, int distance) {
  27. if(!root) return;
  28. //push vector<int> in a vector
  29. while(result.size() < distance)
  30. result.push_back({});
  31. result[distance-1].push_back(root->val);
  32. //auto element is a simple way to go around this set
  33. for(auto child: root->children)
  34. preorder(child, result, distance + 1);
  35. }
  36. };