题目
给定一个 N 叉树
,返回其节点值的后序遍历。
例如,给定一个 3叉树
:
返回其后序遍历:[5, 6, 3, 2, 4, 1]
.
方案一(递归)
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
def postorder(root: 'Node') -> [int]:
if not root:
return []
if not root.children:
return [root.val]
ret = []
for child in root.children:
ret.extend(self.postorder(child))
ret.append(root.val)
return ret
方案二(迭代)
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
def postorder(root: 'Node') -> [int]:
if not root:
return []
stack = [root]
visited = set()
ret = []
while stack:
node = stack.pop()
if node not in visited and node.children:
visited.add(node)
stack.append(node)
stack.extend(node.children[::-1])
else:
ret.append(node.val)
return ret
原文
https://leetcode-cn.com/explore/learn/card/n-ary-tree/159/traversal/621/