tree_0.svg

堆栈实现

  1. def stack_print(root):
  2. if not root:
  3. return
  4. stack1 = []
  5. stack2 = []
  6. result = []
  7. node = root
  8. stack1.append(node)
  9. while stack1:
  10. node = stack1.pop()
  11. if node.left:
  12. stack1.append(node.left)
  13. if node.right:
  14. stack1.append(node.right)
  15. stack2.append(node)
  16. while stack2:
  17. result.append(stack2.pop().val)
  18. return result

递归实现

  1. def recursive_print(root):
  2. result = []
  3. def postorder(root):
  4. if not root:
  5. return
  6. postorder(root.left)
  7. postorder(root.right)
  8. result.append(root.val)
  9. postorder(root)
  10. return result