📅  最后修改于: 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)。因此,该算法适用于空间复杂度较小的二叉搜索树。