二叉树前序、中序、后序遍历-python

怼烎@ 2023-07-25 09:20 71阅读 0赞

一、中序遍历

  1. def inorderTraversal(root):
  2. if not root:
  3. return []
  4. return inorderTraversal(root.left) + [root.val] + inorderTraversal(root.right)
  5. def inorderTraversal(root):
  6. stack = []
  7. sol = []
  8. curr = root
  9. while stack or curr:
  10. if curr:
  11. stack.append(curr)
  12. curr = curr.left
  13. else:
  14. curr = stack.pop()
  15. sol.append(curr.val)
  16. curr = curr.right
  17. return sol

二、前序遍历

  1. def preorderTraversal(root):
  2. if not root:
  3. return []
  4. return [root.val] + inorderTraversal(root.left) + inorderTraversal(root.right)
  5. def preorderTraversal(root):
  6. stack = []
  7. sol = []
  8. curr = root
  9. while stack or curr:
  10. if curr:
  11. sol.append(curr.val)
  12. stack.append(curr.right)
  13. curr = curr.left
  14. else:
  15. curr = stack.pop()
  16. return sol

三、后序遍历

  1. def postorderTraversal(root):
  2. if not root:
  3. return []
  4. return inorderTraversal(root.left) + inorderTraversal(root.right) + [root.val]
  5. def postorderTraversal(root):
  6. stack = []
  7. sol = []
  8. curr = root
  9. while stack or curr:
  10. if curr:
  11. sol.append(curr.val)
  12. stack.append(curr.left)
  13. curr = curr.right
  14. else:
  15. curr = stack.pop()
  16. return sol[::-1]

发表评论

表情:
评论列表 (有 0 条评论,71人围观)

还没有评论,来说两句吧...

相关阅读