diff --git a/problems/n-ary-tree-level-order-traversal.cpp b/problems/n-ary-tree-level-order-traversal.cpp new file mode 100644 index 0000000..68d870e --- /dev/null +++ b/problems/n-ary-tree-level-order-traversal.cpp @@ -0,0 +1,47 @@ +/* +// Definition for a Node. +class Node { +public: + int val; + vector children; + + Node() { } + + Node(int _val) + { + val = _val; + } + + Node(int _val, vector _children) + { + val = _val; + children = _children; + } +}; +*/ + +class Solution { + void levelOrder(vector>& traversal, Node* root, int level) + { + if (root == nullptr) { + return; + } + + if (level >= traversal.size()) { + traversal.push_back({}); + } + traversal[level].push_back(root->val); + + for (auto child : root->children) { + levelOrder(traversal, child, level + 1); + } + } + +public: + vector> levelOrder(Node* root) + { + vector> result; + levelOrder(result, root, 0); + return result; + } +};