返回
揭开二叉树前中后遍历的奥秘
Android
2023-10-01 07:07:09
二叉树的遍历是指按照某种顺序访问二叉树中的所有结点。二叉树的遍历顺序主要有三种:前序遍历、中序遍历和后序遍历。
- 前序遍历 :先访问根结点,再访问左子树,最后访问右子树。
- 中序遍历 :先访问左子树,再访问根结点,最后访问右子树。
- 后序遍历 :先访问左子树,再访问右子树,最后访问根结点。
三种遍历方式都可以用递归和迭代两种方式实现。
递归实现
递归实现是比较简单的一种实现方式。基本思路是:
- 访问根结点。
- 递归访问左子树。
- 递归访问右子树。
迭代实现
迭代实现需要使用栈或队列等数据结构。基本思路是:
- 将根结点压入栈或队列中。
- 当栈或队列不为空时,取出栈或队列顶部的结点,并访问该结点。
- 如果该结点有左子树,则将左子树压入栈或队列中。
- 如果该结点有右子树,则将右子树压入栈或队列中。
示例代码
以下是二叉树前序遍历、中序遍历和后序遍历的示例代码:
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def preorder_traversal(root):
if root is None:
return
print(root.data)
preorder_traversal(root.left)
preorder_traversal(root.right)
def inorder_traversal(root):
if root is None:
return
inorder_traversal(root.left)
print(root.data)
inorder_traversal(root.right)
def postorder_traversal(root):
if root is None:
return
postorder_traversal(root.left)
postorder_traversal(root.right)
print(root.data)
# 创建二叉树
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
# 前序遍历二叉树
preorder_traversal(root)
# 中序遍历二叉树
inorder_traversal(root)
# 后序遍历二叉树
postorder_traversal(root)
总结
二叉树遍历是二叉树的一种基本操作,它可以通过递归或迭代的方式实现。本文详细介绍了二叉树的前序遍历、中序遍历和后序遍历的实现方式,并提供了相应的示例代码。