Skip to content

Commit 7c31a0b

Browse files
authored
Create n-ary-tree-preorder-traversal.py
1 parent 6e622da commit 7c31a0b

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Time: O(n)
2+
# Space: O(h)
3+
4+
# Given an n-ary tree, return the preorder traversal of its nodes' values.
5+
#
6+
# For example, given a 3-ary tree:
7+
# Return its preorder traversal as: [1,3,5,6,2,4].
8+
#
9+
# Note: Recursive solution is trivial, could you do it iteratively?
10+
11+
# Definition for a Node.
12+
class Node(object):
13+
def __init__(self, val, children):
14+
self.val = val
15+
self.children = children
16+
17+
18+
class Solution(object):
19+
def preorder(self, root):
20+
"""
21+
:type root: Node
22+
:rtype: List[int]
23+
"""
24+
if not root:
25+
return []
26+
result, stack = [], [root]
27+
while stack:
28+
node = stack.pop()
29+
result.append(node.val)
30+
for child in reversed(node.children):
31+
if child:
32+
stack.append(child)
33+
return result
34+
35+
36+
class Solution2(object):
37+
def preorder(self, root):
38+
"""
39+
:type root: Node
40+
:rtype: List[int]
41+
"""
42+
def dfs(root, result):
43+
result.append(root.val)
44+
for child in root.children:
45+
if child:
46+
dfs(child, result)
47+
48+
result = []
49+
if root:
50+
dfs(root, result)
51+
return result

0 commit comments

Comments
 (0)