Leetcode 590.N叉树的后序遍历
1 题目描述(Leetcode题目链接)
给定一个 N 叉树,返回其节点值的后序遍历。
例如,给定一个 3叉树 :
返回其后序遍历: [5,6,3,2,4,1].
说明: 递归法很简单,你可以使用迭代法完成此题吗?
2 题解
迭代方法可以按照前序遍历的方法,但是需要按照”根右左“的顺序访问,这时候的返回值只需要将前序遍历结果倒过来就行。
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
class Solution:
def postorder(self, root: 'Node') -> List[int]:
if not root:
return []
retv = []
stack = [root]
while stack:
node = stack.pop()
retv.append(node.val)
for child in node.children:
stack.append(child)
return retv[::-1]
递归方法如下:
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
class Solution:
def postorder(self, root: 'Node') -> List[int]:
retv = []
if root:
for child in root.children:
retv += self.postorder(child)
retv.append(root.val)
return retv