Problem : https://leetcode.com/problems/n-ary-tree-level-order-traversal/
BFS Solution:
"""
# 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]]:
if not root: return []
queue = [root]
result = []
while queue:
result.append([node.val for node in queue])
queue = [child for node in queue for child in node.children]
return result
DFS Solution:
"""
# 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]]:
if not root: return []
result = []
stack = [(root, 0)]
while stack:
node, level = stack.pop()
if level == len(result):
result.append([node.val])
else:
result[level].append(node.val)
for child in reversed(node.children):
stack.append((child, level+1))
return result
No comments:
Post a Comment