31 lines
881 B
Python
31 lines
881 B
Python
"""
|
|
Method 1: recursive
|
|
"""
|
|
def postorderTraversal(self, root):
|
|
res = []
|
|
def helper(root):
|
|
if root:
|
|
helper(root.left)
|
|
helper(root.right)
|
|
res.append(root.val)
|
|
helper(root)
|
|
return res
|
|
|
|
"""
|
|
Method 2: iterative, using two stacks
|
|
initialize first stack with root node, do the following if first is not None:
|
|
pop from first stack, append the popped element to second stack,
|
|
add left and right node to first stack if they are not None
|
|
return the second stack's value in reverse order
|
|
"""
|
|
def postorderTraversal(self, root):
|
|
if not root: return []
|
|
first, second = [root], []
|
|
while first:
|
|
node = first.pop()
|
|
second.append(node)
|
|
if node.left: first.append(node.left)
|
|
if node.right: first.append(node.right)
|
|
res = [node.val for node in second]
|
|
res.reverse()
|
|
return res |