leetcode-145-二叉树的后序遍历
题目描述:
方法一:递归
class Solution: def postorderTraversal(self, root: TreeNode) -> List[int]: res = [] def helper(root): if not root: return helper(root.left) helper(root.right) res.append(root.val) helper(root) return res
方法二:迭代
class Solution: def postorderTraversal(self, root: TreeNode) -> List[int]: res = [] if not root: return res stack = [root] while stack: node = stack.pop() if node.left: stack.append(node.left) if node.right: stack.append(node.right) res.append(node.val) return res[::-1]
另:
class Solution: def postorderTraversal(self, root: TreeNode) -> List[int]: if not root: return [] stack = [] p = root res = [] flag = [] while p or stack: while p: flag.append(0) stack.append(p) p = p.left while stack and flag[-1] == 1: flag.pop() res.append(stack.pop().val) if stack: flag[-1] = 1 p = stack[-1].right return res