java数据结构与算法刷题-----LeetCode700. 二叉搜索树中的搜索

【数据结构-进阶】二叉搜索树 二叉搜索树最早是由 Bernoulli 兄弟在 18 世纪中提出的,但是真正推广和应用该数据结构的是 1960 年代的 D.L. Gries。他的著作《The Science of Programming》中详细介绍了二叉搜索树的实现和应用。在计算机科学的发展中,二叉搜索树成为了一种非常基础的数据结构,被广泛应用在各种领域,包括搜索、排序、数据库索引等。随着计算机算力的提升和对数据结构的深入研究,二叉搜索树也不断被优化和扩展,例如 AVL 树、红黑树等。int key; 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

解题思路:时间复杂度和空间复杂度都是O(n)
  1. 如果目标值val,和当前结点值一样,就返回当前结点。
  2. 如果目标值val,比当前结点小,就去左子树找。
  3. 如果目标值val,比当前结点大,就去右子树找。
  4. 如果当前结点为null,说明找不着,返回null

1. 法一:递归

代码

在这里插入图片描述

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if(root == null) return null;//如果root==null,说明找不到
        if(root.val == val) return root;//如果正好相等,说明找到了
        else if(root.val > val) return searchBST(root.left,val);//如果val比当前结点小,去左子树
        else return searchBST(root.right,val);//如果val比当前结点大,去右子树
    }
}

2. 法二:迭代法

代码

在这里插入图片描述

class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if(root == null) return null;//如果root==null,说明找不到
        Deque<TreeNode> stack = new LinkedList<>();//模拟栈
        stack.push(root);//先入栈根节点
        while(!stack.isEmpty()){//如果没有遍历完成就继续
            TreeNode node = stack.pop();//出栈
            if(node == null) return null;//如果为null就返回null表示没找着
            else if(val == node.val) return node;//如果正好相等就找到了
            else if(val < node.val) stack.push(node.left);//如果val比当前节点小,就去左子树
            else stack.push(node.right);//如果val比当前结点大,就去右子树
        }
        return null;
    }
}
实战教程:用DETR+超分辨率搞定红外小目标检测(附完整代码) 本文提供了一套完整的红外小目标检测实战方案,通过融合EDSR超分辨率技术与改进型DETR深度学习算法,有效解决了红外图像中小目标检测的难题。文章详细介绍了从环境搭建、数据预处理、模型定制(如引入EMA注意力与S2特征层)到训练调优的全流程,并附有完整代码,旨在帮助开发者将前沿算法高效落地于安防、自动驾驶等实际场景。 阅读详情

相关推荐

赛灵思Xilinx 7系列FPGA硬件设计知识总结

本文讲述了赛灵思7系列FPGA硬件设计的关键点,为使用该系列FPGA提供硬件设计参考。

csdn_dsw的博客 3621

Java实现 LeetCode 700 二叉搜索树中的搜索(遍历树)

700. 二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 例如, 给定二叉搜索树: 4 / \ 2 7 / \ 1 3 和值: 2 你应该返回如下子树: 2 / \ 1 3 在上述示例中,如果要找的值是 5,但因为没有节点...

南 墙 1万+

从零到一:Admin.NET中Swagger与Knife4jUI的深度集成实践

本文详细介绍了在Admin.NET框架中深度集成Swagger与Knife4jUI的实践方法,从基础配置到高级定制,包括认证配置、安全增强、界面主题定制等。通过Furion框架简化配置,开发者可以快速构建专业且友好的API文档界面,提升团队协作效率。

defi6farmer的博客 408

【算法系列-二叉树】二叉搜索树的搜索&验证

【算法系列-二叉树】二叉搜索树的搜索&验证(纪念篇)

Mwt258的博客 1342

从.har文件到Postman集合:一键转换的完整教程(附避坑指南)

本文详细介绍了如何将.har文件高效转换为Postman集合的完整教程,涵盖基础操作到高级技巧,包括认证信息处理、环境变量提取等痛点问题的解决方案。通过抓包工具记录的.har文件,开发者可以快速生成Postman集合,提升API调试与测试效率,特别适合前后端分离开发模式下的团队协作。

weixin_26795617的博客 384

论文理解【LLM-OR】——【Step-Opt】Training LLMs for Optimization Modeling via Iterative Data Synthesis and

本文提出 Step-Opt-Instruct 方法,针对用 LLM 做 OR 问题求解任务,用迭代问题生成 + 分步验证机制实习更可靠的训练数据合成,从而微调开源 LLM 得到 Step-Opt。在多个 OR 建模基准提升性能,尤其在复杂问题上提升更明显

佚失的诗篇 806

leetcode700:二叉搜索树中的搜索(递归与迭代双解法)

这道题目考察了在二叉搜索树(BST)中查找指定值的节点。解题关键在于利用BST的有序性:左子树节点值小于根节点,右子树节点值大于根节点。提供两种解法:递归法(代码简洁,空间复杂度O(H))和迭代法(空间复杂度O(1))。两者时间复杂度均为O(H),H为树高。递归法适合大多数情况,而迭代法更适合树很深或需要节省栈空间的场景。两种方法都通过比较目标值与当前节点值来决定搜索方向,高效地缩小搜索范围。

lyh2004_08的博客 1318

SAP后台JOB保姆级教程:从SM36创建到SM37监控,手把手教你搞定ABAP程序定时任务

本文详细解析SAP后台JOB从创建到监控的全流程,重点介绍SM36创建和SM37监控的操作步骤与最佳实践。通过真实案例演示如何配置定时任务、处理常见故障及实施企业级管理策略,帮助ABAP开发者高效管理后台程序执行。

weixin_30838873的博客 432

代码随想录刷题day17丨654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树

文档讲解:https://programmercarl.com/0654.%E6%9C%80%E5%A4%A7%E4%BA%8C%E5%8F%89%E6%A0%91.html解题思路:递归(前序遍历)

m0_75195038的博客 1049

保姆级教程:用MATLAB搞定运动模糊图片修复(附完整代码与避坑指南)

本文提供了一份详细的MATLAB运动模糊图片修复教程,涵盖盲复原、图像复原等核心技术。通过傅里叶变换和Radon变换分析模糊参数,对比逆滤波、维纳滤波和Lucy-Richardson算法效果,并附完整代码与避坑指南,帮助用户实现专业级图像处理。

weixin_26765363的博客 230

2025年7月5日全国青少年信息素养大赛Python编程初中组复赛真题+答案解析

2025年7月5日全国青少年信息素养大赛Python编程初中组复赛真题+答案解析

伶俐角少儿编程 467

700.二叉搜索树中的搜索(二叉树算法)

题目要求在二叉搜索树(BST)中查找值为val的节点并返回该子树。二叉搜索树具有左小右大的特性,可据此优化搜索路径。解法分两种:递归法通过比较节点值与目标值决定搜索方向;迭代法利用BST特性无需回溯,直接沿搜索路径查找。文章还提到一种BFS解法,虽正确但效率不如前两种方法。关键点在于利用BST的有序性避免无效搜索,使时间复杂度优化至O(h),其中h为树高。

m0_68880377的博客 961

Wazuh部署记录

Wazuh是一个免费的开源安全平台,统一了XDR和SIEM功能。它可以保护内部部署、虚拟化、容器化和基于云的环境中的工作负载。Wazuh帮助组织和个人保护其数据资产免受安全威胁。它被全球数千个组织广泛使用,从小型企业到大型企业。443:仪表盘界面访问端口1515:探针连接服务器端口1514:探针回传信息端口以上3个端口必须打开防火墙。

墨痕诉清风的博客 1562

刷题计划day18 二叉树(七)【合并二叉树】【​二叉搜索树中的搜索】【验证二叉搜索树】

刷题计划day18 二叉树(七),二叉树共十期,加油!【合并二叉树】【​二叉搜索树中的搜索】【验证二叉搜索树】

weixin_72499901的博客 931

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

求二叉搜索树的属性(java)

> 本文系统梳理求二叉搜索树的属性在lecode上的一些热门题目附完整 Java 代码 + 关键逻辑解析+lecode练习地址。适合 LeetCode 刷题 &面试复习!

qikuhu的博客 1248

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

代码随想录算法训练营Day17 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

训练营第17天:654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

jiabao0520的博客 1220

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

算法训练(leetcode)二刷第十五天 | 654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树

LeetCode二刷

weixin_43872997的博客 941

刷题小记 (6) LeetCode 700 二叉搜索树中的搜索

LeetCode 700 2020.8.13 我的通过代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public TreeNode searchBST(Tree

ahhhhhjaksf的博客 99

700. 二叉搜索树中的搜索

本文详细解析了二叉搜索树(BST)的搜索算法。BST通过其特性(左子树值<节点值<右子树值)实现高效搜索,平均时间复杂度O(logn)。核心算法采用递归或迭代方式,每次比较排除一半搜索空间。文章从BST特性、代码实现、执行流程、复杂度分析到实际应用进行了全面讲解,并指出需注意平衡性、空树处理等问题。掌握BST搜索不仅学习了一种高效查找方法,更体现了利用数据结构特性优化算法的重要思想。

mrjieke6的博客 824

数据结构与算法——Java实现 51.力扣700题——二叉搜索树中的搜索操作

给定二叉搜索树(BST)的根节点root和一个整数值val。你需要在 BST 中找到节点值等于val的节点。返回以该节点为根的子树。如果节点不存在,则返回null。[2,1,3][]

m0_73983707的博客 427

LeetCode:700.二叉搜索树中的搜索

LeetCode:700.二叉搜索树中的搜索

xiaoshiguang3的博客 466

java-代码随想录第十七天| 700.二叉搜索树中的搜索、617.合并二叉树、98.验证二叉搜索树

本文总结了三个二叉搜索树相关算法:700题通过递归在BST中搜索指定值节点;617题递归合并两棵二叉树,重叠节点值相加;98题利用中序遍历验证BST的有效性,检查节点值是否严格递增。三个问题都采用递归解法,分别处理了BST的查找、合并和验证操作,体现了递归在树结构问题中的典型应用模式。

qq_57465625的博客 791

「leetcode」700. 二叉搜索树中的搜索:【递归法】【迭代法】详解

利用好二叉搜索树的特性,就发现遍历都简单了

代码随想录 481

LeetCode每日刷题Day14---L700 二叉搜索树中的搜索

L700 二叉搜索树中的搜索 思路与结果 代码思路1 package Day14_6_3.L700; class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } /** * 思路1 1. 通过递归 a. 先判断,为空,则返回空 b. 值等...

weixin_42252770的博客 185

简要分析LeetCode树经典题目(Java)

本文在前文对树结构介绍的基础上,简要分析了LeetCode中难度适中的树问题。其中包含二叉树的遍历、二叉树结构问题、N叉树问题以及二叉搜索树问题。

ArrebolMKJ的博客 2805
上一篇: java数据结构与算法刷题-----LeetCode617. 合并二叉树
下一篇: java数据结构与算法刷题-----LeetCode98. 验证二叉搜索树
ydenergy_殷志鹏
博客等级 码龄7年 5886粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值