Given an n-ary tree, return the preorder traversal of its nodes' values.
For example, given a 3-ary
tree:
Return its preorder traversal as: [1,3,5,6,2,4]
.
Note: Recursive solution is trivial, could you do it iteratively?
Given an n-ary tree, return the postorder traversal of its nodes' values.
For example, given a 3-ary
tree:
Return its postorder traversal as: [5,6,3,2,4,1]
.
Note: Recursive solution is trivial, could you do it iteratively?
循环写法不太好用之前二叉树的方法写:https://blog.csdn.net/zjucor/article/details/53447464
因为一直往左边遍历完自后,我是知道要往右边的,而且直接root.right就访问到了,但是在这里是不行的,遍历完第1个child Node,是无法直接得到下个要遍历的节点。
所以要一次性就把children加到stack的解法
class Solution(object):
def preorder(self, root):
"""
:type root: Node
:rtype: List[int]
"""
if not root: return []
st=[root]
res=[]
while st:
r=st.pop()
res.append(r.val)
st += r.children[::-1]
return res
class Solution(object):
def postorder(self, root):
"""
:type root: Node
:rtype: List[int]
"""
if not root: return []
res, st = [], [root]
while st:
r=st.pop()
res.append(r.val)
st+=r.children
return res[::-1]
这种写法也是super simple啊