Python实现二叉树的常见遍历操作总结「7种方法」

x33g5p2x  于2021-11-21 转载在 Python  
字(1.3k)|赞(0)|评价(0)|浏览(441)

本文实例讲述了Python实现二叉树的常见遍历操作。分享给大家供大家参考,具体如下:

二叉树的定义

  1. class TreeNode:
  2. def __init__(self, x):
  3. self.val = x self.left = None
  4. self.right = None

二叉树的前序遍历

递归

  1. def preorder(root,res=[]):
  2. if not root:
  3. return res.append(root.val)
  4. preorder(root.left,res)
  5. preorder(root.right,res)
  6. return res

迭代

  1. def preorder(root):
  2. res=[] if not root:
  3. return []
  4. stack=[root] while stack:
  5. node=stack.pop()
  6. res.append(node.val)
  7. if node.right: stack.append(node.right)
  8. if node.left: stack.append(node,left)
  9. return res

二叉树的中序遍历

递归

  1. def inorder(root,res=[]):
  2. if not root:
  3. return inorder(root.left,res)
  4. res.append(root.val)
  5. inorder(root.right,res)
  6. return res

迭代

  1. def inorder(root): stack=[]
  2. node=root res=[]
  3. while stack or node:
  4. while node: stack.append(node)
  5. node=node.left
  6. node=stack.pop()
  7. res.append(node.val)
  8. node=node.right
  9. return res

二叉树的后序遍历

递归

  1. def laorder(root,res=[]):
  2. if not root: return laorder(root.left,res)
  3. laorder(root.right,res)
  4. res.append(root.val)
  5. return res

迭代

  1. def laorder(root): stack=[root] res=[]
  2. while stack:
  3. node=stack.pop()
  4. if node.left: stack.append(node.left)
  5. if node.right: stack.append(node.right) res.append(node.val)
  6. return res[::-1]

二叉树的层次遍历

迭代

  1. def levelorder(root): queue=[root]
  2. res=[] while queue: node=queue.pop(0)
  3. if node.left:
  4. queue.append(node.left)
  5. if node.right:
  6. queue.append(node.right)
  7. res.append(node.val)
  8. return res

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

相关文章