📜  数据结构|二叉搜索树|问题1(1)

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

数据结构|二叉搜索树|问题1

二叉搜索树(Binary Search Tree,BST)是一种常用的数据结构。它是一棵空树或者具有下列性质的二叉树:

  • 左子树上所有节点的值均小于它的根节点的值;
  • 右子树上所有节点的值均大于它的根节点的值;
  • 左右子树分别为二叉搜索树。

问题一是指在一个给定的二叉搜索树中,找到某个值是否存在,如果存在返回 true,否则返回 false。

实现

可以递归地搜索二叉搜索树:如果当前节点为空,返回 false;如果当前节点的值等于要查找的值,返回 true;如果当前节点的值大于要查找的值,递归地搜索左子树;如果当前节点的值小于要查找的值,递归地搜索右子树。

以下是用 Python 语言实现该算法的代码:

def search_bst(root, val):
    """
    在二叉搜索树中查找值是否存在

    :param root: 二叉搜索树的根节点
    :param val: 要查找的值
    :return: 若存在,返回 True;否则返回 False
    """
    if not root:
        return False
    if root.val == val:
        return True
    if root.val > val:
        return search_bst(root.left, val)
    return search_bst(root.right, val)
时间复杂度

假设二叉搜索树的高度为 h,那么时间复杂度为 O(h)。如果二叉搜索树是完美平衡的,那么 h = log(n),其中 n 表示节点数;如果二叉搜索树是非平衡的,可能会退化成链表,此时 h = n,时间复杂度为 O(n)。因此,为了保持高效性,需要尽量保证二叉搜索树的平衡。