


可以使用递归或迭代的方法来查找二叉搜索树(BST)中的目标值 val。以下是 Python 代码:
递归解法:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def searchBST(root: TreeNode, val: int) -> TreeNode:
if not root or root.val == val:
return root
if val < root.val:
return searchBST(root.left, val)
return searchBST(root.right, val)
迭代解法:
def searchBST_iterative(root: TreeNode, val: int) -> TreeNode:
while root:
if root.val == val:
return root
elif val < root.val:
root = root.left
else:
root = root.right
return None
解释:
- 递归解法:如果
root为空或者root.val == val,直接返回root。否则,根据 BST 性质,若val小于root.val,递归左子树,否则递归右子树。 - 迭代解法:使用
while循环,不断遍历左或右子树,直到找到目标值或root为空。
这两种方法的时间复杂度均为 O(h)(h 是 BST 的高度),最坏情况下(链状树)为 O(n),最优情况下(平衡树)为 O(log n)。
425

被折叠的 条评论
为什么被折叠?



