590. N 叉树的后序遍历
题目描述
解题思路
手动维护栈模拟函数栈的调用过程
代码实现
"""
# 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 []
helper = [root]
queue = [root]
res = []
while helper:
node = helper.pop()
if node.children:
helper.extend(node.children[::-1])
queue.extend(node.children[::-1])
while queue:
node = queue.pop()
res.append(node.val)
return res
def postorder1(self, root: 'Node') -> List[int]:
# 递归法
if not root:
return []
nums = []
for child in root.children:
nums.extend(self.postorder(child))
return nums + [root.val]
参考文献
1、官方题解