题目:
给定一个 N 叉树,返回其节点值的后序遍历。
例如,给定一个 3叉树
:
返回其后序遍历: [5,6,3,2,4,1]
.
说明: 递归法很简单,你可以使用迭代法完成此题吗?
思路(递归):
后序遍历的顺序是:左→右→根。因此,需要先看根节点是否有孩子节点,有的话依次遍历孩子节点,将孩子节点作为参数再使用这个函数。当孩子节点遍历完之后再将根节点加入到结果集当中。
代码(递归):
"""
# Definition for a Node.
class Node(object):
def __init__(self, val, children):
self.val = val
self.children = children
"""
class Solution(object):
def postorder(self, root):
"""
:type root: Node
:rtype: List[int]
"""
res = []
if root == None:
return res
if root.children != None:
for child in root.children:
res.extend(self.postorder(child))
res.append(root.val)
return res