题目描述:
给定一个二叉树,返回它的后序
遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [3,2,1]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
通过次数136,639 提交次数 187,159
递归方法
# Definition for a binary tree node.
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def postorderTraversal(self, root: TreeNode) -> List[int]:
self.re = []
def iters(root):
if root:
iters(root.left)
iters(root.right)
self.re.append(root.val)
iters(root)
return self.re
非递归方法
# Definition for a binary tree node.
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def postorderTraversal(self, root: TreeNode) -> List[int]:
self.re = []
stack = []
node = root
while stack or node:
while node:
stack.append(node)
node = node.left if node.left else node.right
node = stack.pop()
self.re.append(node.val)
if stack and stack[-1].left==None:
node = stack[-1].right
else:
node = None
return self.re