📅  最后修改于: 2023-12-03 15:40:00.876000             🧑  作者: Mango
二叉搜索树(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)。因此,为了保持高效性,需要尽量保证二叉搜索树的平衡。