返回

通俗易懂的二叉搜索树遍历

见解分享

二叉搜索树,简称BST(Binary Search Tree),是一种维护二叉查找树性质的二叉树。二叉搜索树的每一个节点都拥有一个键值,且该键值大于其左子节点的键值,而小于其右子节点的键值。

二叉搜索树的遍历方法主要分为三种:前序遍历、中序遍历和后序遍历。这三种遍历方法都是按照一定的顺序访问二叉搜索树中的节点,不过顺序却有所不同。

前序遍历

前序遍历的顺序是:根、左子树、右子树。前序遍历的算法实现如下:

def preorder_traversal(root):
    # 访问根节点
    print(root.key)
    
    # 递归访问左子树
    if root.left is not None:
        preorder_traversal(root.left)
    
    # 递归访问右子树
    if root.right is not None:
        preorder_traversal(root.right)

中序遍历

中序遍历的顺序是:左子树、根、右子树。中序遍历的算法实现如下:

def inorder_traversal(root):
    # 递归访问左子树
    if root.left is not None:
        inorder_traversal(root.left)
    
    # 访问根节点
    print(root.key)
    
    # 递归访问右子树
    if root.right is not None:
        inorder_traversal(root.right)

后序遍历

后序遍历的顺序是:左子树、右子树、根。后序遍历的算法实现如下:

def postorder_traversal(root):
    # 递归访问左子树
    if root.left is not None:
        postorder_traversal(root.left)
    
    # 递归访问右子树
    if root.right is not None:
        postorder_traversal(root.right)
    
    # 访问根节点
    print(root.key)

遍历示例

下面以一个示例来说明这三种遍历方法的执行顺序。假设我们有一个二叉搜索树,其结构如下:

       5
     /  \
    3   8
   / \  / \
  2   4 7   9

前序遍历的结果是: 5、3、2、4、8、7、9
中序遍历的结果是: 2、3、4、5、7、8、9
后序遍历的结果是: 2、4、3、7、9、8、5

总结

前序遍历、中序遍历和后序遍历是二叉搜索树最常用的三种遍历方法。这三种遍历方法各有其特点,并且在不同的应用场景下都有着广泛的应用。