Binary Tree Postorder Traversal
Given a binary tree, return the postorder traversal of its nodes’ values.
Example
Input: [1,null,2,3]
Output: [3,2,1]
Solution
#Recursively
class Solution:
def postorderTraversal(self, root: TreeNode) -> List[int]:
def post(root, ret):
if root:
post(root.left, ret)
post(root.right, ret)
ret.append(root.val)
else:
return
ret = []
post(root, ret)
return ret
#Iteratively reverse modified pre-order 中右左变成左右中
class Solution:
def postorderTraversal(self, root: TreeNode) -> List[int]:
ret, stack = [], [root]
while stack:
node = stack.pop()
if node:
ret.append(node.val)
stack.append(node.left)
stack.append(node.right)
return ret[::-1]