Tree Traversal Target: 15s
Recursive: left → right → root. Iterative trick: do root → right → left (modified preorder) then reverse.
def postorder(root):
res = []
def dfs(node):
if not node: return
dfs(node.left)
dfs(node.right)
res.append(node.val)
dfs(root)
return res
# Iterative (reverse of modified preorder):
def postorder_iter(root):
if not root: return []
stack, res = [root], []
while stack:
node = stack.pop()
res.append(node.val)
if node.left: stack.append(node.left)
if node.right: stack.append(node.right)
return res[::-1]
Type it from memory. Go.