返回

揭开二叉树前中后遍历的奥秘

Android

二叉树的遍历是指按照某种顺序访问二叉树中的所有结点。二叉树的遍历顺序主要有三种:前序遍历、中序遍历和后序遍历。

  • 前序遍历 :先访问根结点,再访问左子树,最后访问右子树。
  • 中序遍历 :先访问左子树,再访问根结点,最后访问右子树。
  • 后序遍历 :先访问左子树,再访问右子树,最后访问根结点。

三种遍历方式都可以用递归和迭代两种方式实现。

递归实现

递归实现是比较简单的一种实现方式。基本思路是:

  1. 访问根结点。
  2. 递归访问左子树。
  3. 递归访问右子树。

迭代实现

迭代实现需要使用栈或队列等数据结构。基本思路是:

  1. 将根结点压入栈或队列中。
  2. 当栈或队列不为空时,取出栈或队列顶部的结点,并访问该结点。
  3. 如果该结点有左子树,则将左子树压入栈或队列中。
  4. 如果该结点有右子树,则将右子树压入栈或队列中。

示例代码

以下是二叉树前序遍历、中序遍历和后序遍历的示例代码:

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)

总结

二叉树遍历是二叉树的一种基本操作,它可以通过递归或迭代的方式实现。本文详细介绍了二叉树的前序遍历、中序遍历和后序遍历的实现方式,并提供了相应的示例代码。