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)