news 2026/4/30 19:24:50

LeetCode 二叉搜索树搜索题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 二叉搜索树搜索题解

LeetCode 二叉搜索树搜索题解

题目描述

实现二叉搜索树的搜索算法,在二叉搜索树中查找目标值。

示例

输入:

4 / \ 2 6 / \ / \ 1 3 5 7

目标值:5
输出:找到节点5

解题思路

方法:二叉搜索树搜索

思路

  • 二叉搜索树的特点是:左子树的所有节点的值都小于根节点的值,右子树的所有节点的值都大于根节点的值。
  • 利用这个特点,可以通过比较目标值与当前节点的值来决定搜索方向:
    1. 如果目标值等于当前节点的值,返回当前节点。
    2. 如果目标值小于当前节点的值,递归搜索左子树。
    3. 如果目标值大于当前节点的值,递归搜索右子树。
    4. 如果到达空节点,说明目标值不存在。

复杂度分析

  • 时间复杂度:O(h),其中 h 是二叉搜索树的高度。在平衡二叉搜索树中,h = log n。
  • 空间复杂度:O(h),需要额外的空间来存储递归调用的栈。

代码实现

方法:二叉搜索树搜索(递归)

# 定义二叉搜索树节点 class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right # 二叉搜索树搜索(递归) def search_bst(root, val): if not root: return None if root.val == val: return root elif root.val > val: return search_bst(root.left, val) else: return search_bst(root.right, val) # 测试 def test_search_bst(): # 构建二叉搜索树 root = TreeNode(4) root.left = TreeNode(2) root.right = TreeNode(6) root.left.left = TreeNode(1) root.left.right = TreeNode(3) root.right.left = TreeNode(5) root.right.right = TreeNode(7) # 测试搜索 result = search_bst(root, 5) print(result.val if result else None) # 输出:5 result = search_bst(root, 8) print(result) # 输出:None if __name__ == "__main__": test_search_bst()

方法:二叉搜索树搜索(迭代)

# 二叉搜索树搜索(迭代) def search_bst_iterative(root, val): current = root while current: if current.val == val: return current elif current.val > val: current = current.left else: current = current.right return None # 测试 def test_search_bst_iterative(): # 构建二叉搜索树 root = TreeNode(4) root.left = TreeNode(2) root.right = TreeNode(6) root.left.left = TreeNode(1) root.left.right = TreeNode(3) root.right.left = TreeNode(5) root.right.right = TreeNode(7) # 测试搜索 result = search_bst_iterative(root, 5) print(result.val if result else None) # 输出:5 result = search_bst_iterative(root, 8) print(result) # 输出:None if __name__ == "__main__": test_search_bst_iterative()

测试用例

测试用例 1:基本情况

输入:

4 / \ 2 6 / \ / \ 1 3 5 7

目标值:5
输出:找到节点5

测试用例 2:目标值不存在

输入:

4 / \ 2 6 / \ / \ 1 3 5 7

目标值:8
输出:None

总结

二叉搜索树搜索是一种高效的搜索算法,它利用二叉搜索树的特性来快速定位目标值。二叉搜索树搜索的时间复杂度为 O(h),其中 h 是树的高度。

二叉搜索树搜索的核心思想是:利用二叉搜索树的特性,通过比较目标值与当前节点的值来决定搜索方向。

掌握二叉搜索树搜索的原理和实现,对于理解树形数据结构的搜索操作非常重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 19:21:34

Munin API参考手册:核心接口与数据结构详细说明

Munin API参考手册:核心接口与数据结构详细说明 【免费下载链接】munin Main repository for munin master / node / plugins 项目地址: https://gitcode.com/gh_mirrors/mu/munin Munin作为一款强大的系统监控工具,其API接口为开发者提供了灵活的…

作者头像 李华
网站建设 2026/4/30 19:17:32

PyTorch 2.8深度学习镜像入门必看:CUDA 12.4优化版GPU利用率提升解析

PyTorch 2.8深度学习镜像入门必看:CUDA 12.4优化版GPU利用率提升解析 1. 为什么选择这个镜像 如果你正在寻找一个开箱即用的深度学习环境,这个基于PyTorch 2.8和CUDA 12.4的优化镜像可能是你的理想选择。它专为RTX 4090D 24GB显卡设计,经过…

作者头像 李华
网站建设 2026/4/30 19:16:35

微信聊天记录永久保存指南:用免费开源工具完整备份你的数字记忆

微信聊天记录永久保存指南:用免费开源工具完整备份你的数字记忆 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因为手机丢失、误删聊天记录而懊恼不…

作者头像 李华
网站建设 2026/4/30 19:16:35

Qwen2.5-72B大模型企业应用:多语言支持+结构化数据理解实战落地解析

Qwen2.5-72B大模型企业应用:多语言支持结构化数据理解实战落地解析 1. 引言:为什么企业需要关注Qwen2.5-72B 在全球化商业环境中,企业面临着多语言沟通和复杂数据处理的双重挑战。传统解决方案往往需要组合多个工具和系统,导致效…

作者头像 李华