N-ary Tree Level Order Traversal - Solution
Solutions and explanations

"""
# Definition for a Node.
class Node:
    def __init__(self, val: Optional[int] = None, children: Optional[List['Node']] = None):
        self.val = val
        self.children = children
"""

class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        if not root:
            return []

        result = []
        queue = collections.deque([root])

        while queue:
            level_res = []
            for _ in range(len(queue)):
                node = queue.popleft()
                level_res.append(node.val)
                queue.extend(node.children)
            result.append(level_res)
        
        return result

Complexity Analysis

Here, n is the number of nodes in the tree.

  • Time Complexity: O(n)
  • Space Complexity: O(n)

"""
# Definition for a Node.
class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""

class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        res = []

        def dfs(node, level):
            if not node:
                return
            if len(res) == level:
                res.append([])
            res[level].append(node.val)
            for child in node.children:
                dfs(child, level + 1)

        dfs(root, 0)
        return res

Complexity Analysis

Here, n is the number of nodes in the tree.

  • Time Complexity: O(n)
  • Space Complexity: O(n)