📜  二叉搜索树的预排序中的叶节点(使用递归)(1)

📅  最后修改于: 2023-12-03 15:21:39.848000             🧑  作者: Mango

二叉搜索树的预排序中的叶节点(使用递归)

简介

二叉搜索树,又称有序二叉树、排序二叉树,是特殊的二叉树。它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉查找树。该算法的目的是输出一棵二叉搜索树的预排序(前序遍历),并仅输出叶节点。

算法思路

使用递归法进行实现。遍历节点时,若节点为叶节点,输出节点的值。

  • 若节点为空节点,则返回。
  • 若节点为叶节点,则输出该节点的值。
  • 若节点非叶节点,则分别判断该节点的左子节点和右子节点是否为叶子节点。

在递归方法中,将当前节点作为参数传入下一层递归中。

代码实现
def print_leaves(root):
    if not root:
        return

    if not root.left and not root.right:
        print(root.val)

    print_leaves(root.left)
    print_leaves(root.right)
复杂度分析

该算法使用递归法进行实现,时间复杂度为O(n),空间复杂度为O(h),其中h为树的高度。当树为平衡树时,空间复杂度为O(logn)。当树为非平衡树时,空间复杂度为O(n)。因此,该算法适用于空间复杂度较小的二叉搜索树。