​LeetCode刷题实战98:验证二叉搜索树

【力扣题解】P98-验证二叉搜索树-Java题解 【力扣题解】P98-验证二叉搜索树-Java详细题解 阅读详情

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 验证二叉搜索树,我们先来看题面:

https://leetcode-cn.com/problems/validate-binary-search-tree/

Given a binary tree, determine if it is a valid binary search tree (BST).

Assume a BST is defined as follows:

The left subtree of a node contains only nodes with keys less than the node's key.

The right subtree of a node contains only nodes with keys greater than the node's key.

Both the left and right subtrees must also be binary search trees.

题意

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

假设一个二叉搜索树具有如下特征:

  • 节点的左子树只包含小于当前节点的数。

  • 节点的右子树只包含大于当前节点的数。

  • 所有左子树和右子树自身必须也是二叉搜索树。

样例


解题

我们都知道二叉搜索树:中序遍历为严格的递增序列。

所以我们可以使用中序遍历的递归遍历这个二叉树,并且实时更新当前中序遍历到的最大值,如果正在判断的节点的val不大于这个实时的最大值,那就说明这个二叉树的中序遍历不是严格递增的,继而判定这个二叉树不是二叉搜索树。

class Solution {
public:
  long long maxValue = LLONG_MIN;//中序遍历的当前最大值
  bool isValidBST(TreeNode* root) {
    if (root == NULL){
      return true;
    }
    if (!isValidBST(root->left)){//首先判断左子树是否是搜索二叉树
      return false;
    }
    if (root->val <= maxValue){//如果发现不大于之前的遇到的最大值,说明中序遍历不是严格的递增
      return false;
    }
    maxValue = root->val;//更新中序遍历到此时,遇到的最大值
    if (!isValidBST(root->right)){//首先判断右子树是否是搜索二叉树
      return false;
    }
    return true;
  }
};

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力。

上期推文:

LeetCode50-80题汇总,速度收藏!

LeetCode刷题实战81:搜索旋转排序数组 II

LeetCode刷题实战82:删除排序链表中的重复元素 II

LeetCode刷题实战83:删除排序链表中的重复元素

LeetCode刷题实战84: 柱状图中最大的矩形

LeetCode刷题实战85:最大矩形

LeetCode刷题实战86:分隔链表

LeetCode刷题实战87:扰乱字符串

LeetCode刷题实战88:合并两个有序数组

LeetCode刷题实战89:格雷编码

LeetCode刷题实战90:子集 II

LeetCode刷题实战91:解码方法

LeetCode刷题实战92:反转链表 II

LeetCode刷题实战93:复原IP地址

LeetCode刷题实战94:二叉树的中序遍历

LeetCode刷题实战95:不同的二叉搜索树 II

LeetCode刷题实战96:不同的二叉搜索树

LeetCode刷题实战97:交错字符串

LeetCode 第98题:验证二叉搜索树 通过中序遍历法、递归法和迭代法,我们成功地解决了 LeetCode 第98题——验证二叉搜索树。中序遍历法:直观易懂,适用于初学者理解树的遍历过程。递归法(上下界限制):通过上下界限制递归检查每个节点,代码简洁,适用于深度优先搜索的场景。迭代法(中序遍历):通过栈实现中序遍历,避免了递归的栈溢出问题,适用于大规模树结构。希望这篇博客能帮助大家更好地理解验证二叉搜索树的方法,并应用到实际的算法问题中。如果你有任何问题或建议,欢迎在评论区留言,我们一起讨论进步。 阅读详情

相关推荐

【中等】力扣算法题解析LeetCode98:验证二叉搜索树

本文介绍了如何判断一棵二叉树是否为有效的二叉搜索树(BST)。有效BST需满足:左子树所有节点值小于当前节点,右子树所有节点值大于当前节点,且左右子树自身也是BST。采用递归上下界检查法,为每个节点维护允许取值的上下界(初始为Long极限值),递归验证节点值是否在区间内。时间复杂度O(n),空间复杂度O(n)。附Java代码实现,通过递归辅助函数检查子树的有效性,确保逻辑严谨。

ylumwd的博客 923

判断二叉树是否为二叉搜索树(C语言)

C语言判断树是否为二叉搜索树

sskdspdl的博客 1246

Jetson Nano(1)——笔记本电脑控制

笔记本电脑控制Jetson Nano没有显示屏如何控制Jetson Nano一、使用ssh客户端连接到Jetson Nano的命令端1.将电脑的网线口和jetson nano的网线口通过网线连接2.在控制面版中打开“更改配适器设置”3.查找jetson nano的ip地址4.利用putty链接二、远程桌面配置 没有显示屏如何控制Jetson Nano Jetson Nano相当于一个微型电脑,能快...

weixin_43619070的博客 1万+

LeetCode 98. 验证二叉搜索树(中序遍历)

文章目录1. 题目信息2. 解题 1. 题目信息 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4...

Michael是个半路程序员 1422

2026年ERP选型实战:按规模分档,避开成本与实施陷阱

企业资源计划(ERP)是现代企业数字化转型的核心系统,它将财务、供应链、制造、人力等业务整合到统一平台。随着云计算和人工智能技术的发展,ERP已从传统本地部署的记录工具演变为SaaS订阅制、具备AI辅助决策能力的智能运营平台。不同规模企业在选型时的关注点差异巨大:小微企业追求轻量化和快速出报表,中型企业需要在流程标准化与业务灵活性间取得平衡,大型集团则注重多法人管控和数据治理。此外,制造、电商、工程等行业对ERP的模块要求也各有侧重,成本核算数据跑不通更是普遍痛点。如何结合企业规模与行业特征,制定合理的选型

weixin_34320724的博客 378

通俗地解释一下 EMD(经验模态分解,Empirical Mode Decomposition)

EMD 就像把一碗“混在一起的面条”分成不同粗细的面条,方便你逐层分析每种波动。

qlkaicx的博客 1249

判断一颗二叉树是否是二叉排序树

1. 问题描述: 设计一个算法,判断给出的二叉树是否是二叉排序树,假设二叉排序树已经存储在二叉链表的存储结构中,树节点的个数为n,节点值为int类型 2. 思路如下: ① 判断一颗二叉树是否是二叉排序树的方法有好几种,其中最简单的方法是对给定的二叉树进行中序遍历,假如二叉树是二叉排序树那么中序遍历的结果一定是递增的,假如不是那么就不是二叉排序树 ② 基于上面的想法我们可以使用中序遍历的方法...

二哈 2万+

BambuStudio学习笔记:OpenCSG - 实时构造实体几何(CSG)渲染的 OpenGL 方案

**OpenCSG** 是一个基于 **OpenGL** 的 **构造实体几何(CSG)** 实时渲染库,通过 **深度剥离算法** 实现布尔运算(并集、交集、差集)的可视化。其核心目标是简化复杂几何体的交互式建模,适用于 CAD 原型设计、3D 打印预览、教育工具等场景。

zzzkk2009的专栏 929

二叉排序树(BSTree)关于查找算法结合

/*基于树的顺序查找法*/ /*二叉排序树的存储结构*/ typedef struct node { KeyType key; /*关键字的值*/ struct node *lchild, *rchild; /*左右指针*/ } NSTNode, *BSTree; /*二叉排序树插入递归算法*/ void InsertBST(BSTr

Steve Wang's blog 1671

告别命令行!用这个开源的Web版Kettle工具,5分钟搞定数据集成任务编排

本文介绍了一款开源的Web版Kettle工具,通过直观的拖拽界面大幅提升数据集成效率,告别复杂的命令行操作。该工具基于Kettle核心引擎,支持跨平台协作、轻量化访问和降低学习曲线,特别适合业务分析师快速上手。实测显示,使用该工具后任务配置错误率下降62%,协作效率提升40%。

weixin_30267785的博客 435

小论文/大论文必备 | YOLO多模态目标检测、绘制曲线对比图 | 引入多种绘制曲线对比图,包括mAP0.5,mAP0.5:0.95,Loss损失变化的曲线对比

本文通过可视化方法分析YOLO多模态模型的训练过程,对比不同实验的检测精度和损失函数变化。主要内容包括:1)绘制mAP@0.5和mAP@0.5:0.95曲线评估检测精度;2)分析边界框回归损失(box_loss)、分类损失(cls_loss)和分布式损失(dfl_loss)的收敛趋势;3)提供完整的Python代码实现,支持多实验对比,可生成高清曲线图。该方法能直观展示模型训练效果,便于优化策略评估和参数调优。

Ai缝合怪、助力小伙伴高效发论文 261

C语言:判断二叉树是否为二叉排序树的算法

根据二叉排序树的定义,对二叉树进行递归遍历,左子树关键字比根结点关键字小,右子树的关键字比根结点的关键字大,一旦有不满足条件则可判断不是二叉排序树。通过参数 flag 的值来判断,flag 为 1 表示是二叉排序树,为 0 则表示非二叉排序树,flag 初值为 1。设定全局变量 pre(初始值为 NULL)来指向遍历过程结点的前驱。给定的二叉树进行中序遍历,如果始终能保持前一个值比后一个值小,则说明该二叉树是一棵二叉排序树,算法如下。对二叉排序树来说,其中序遍历序列为一个递增有序序列,因此,对。

零小唬的博客 1万+

16、Arduino MEGA 2560 固件与电路详解

本文详细介绍了Arduino MEGA 2560的固件编程与电路设计,涵盖ATmega16U2和ATmega2560的熔丝配置、stk500v2引导加载程序的备份与恢复方法、使用Microchip Studio通过ICSP烧录固件的步骤,以及debugWIRE和JTAG调试接口的选择与配置。同时提供了电路块图解析、组件位置参考及常见问题解决方案,帮助用户深入理解硬件结构并进行高效开发与调试。

swift5iosmith的博客 194

leetcode最大矩形_LeetCode刷题实战98:验证二叉搜索树

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !今天和大家聊的问题叫做验证二叉搜索树,我们先来看题面:https://leetcode-cn.com/problems/validate-binary-search-tree/Given a bina...

weixin_39942108的博客 67

android 14.0 控制wifi启用禁用功能实现

在14.0的产品rom定制化开发中,在产品开发中,对于功能的开发的功能也是挺多的,而在对于wifi的功能定制需求,有要求需要通过系统属性来控制wifi开关是否可以打开 来控制是否可以连接wifi,打开控制wifi的功能,接下来分析wifi的开启流程来实现该功能的实现

安卓兼职framework和app工程师的博客 1771

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【LeetCode刷题日记】一篇搞定二叉搜索树:从性质到实战,700.搜索+98.验证二叉搜索树

本文介绍了二叉搜索树(BST)的基本概念、核心性质及操作。BST通过"左小右大"的规则组织数据,使查找、插入和删除的平均时间复杂度达到O(logn)。文章对比了普通BST与红黑树的区别,分析了BST可能退化为链表的问题及改进方案。通过两道LeetCode题目(700.二叉搜索树中的搜索和98.验证二叉搜索树)展示了BST的递归和迭代实现方法,重点讲解了验证BST的中序遍历思路。最后指出BST在数据库索引、有序集合等场景的应用价值,并强调保持平衡的重要性。

任岁月风干理想再也找不回真的我 1895

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

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

c语言判断一个已知的二叉树是否是二叉排序树_LeetCode刷题实战98:验证二叉搜索树...

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !今天和大家聊的问题叫做验证二叉搜索树,我们先来看题面:https://leetcode-cn.com/problems/validate-binary-search-tree/Given a bina...

weixin_39766014的博客 126

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LeetCode第98题_验证二叉搜索树

给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。

qq_40263592的博客 2415

LeetCode 98. 验证二叉搜索树

LeetCode 98. 验证二叉搜索树 题目 难度 中等 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ ...

一起加油 4996

【力扣刷题实战】验证二叉搜索树

文章目录目录力扣题目:验证二叉搜索树题目描述解题思路问题理解算法选择具体思路解题要点完整代码(C++)兄弟们共勉 !!! 每篇前言原题链接:98. 验证二叉搜索树 - 力扣(LeetCode)给你一个二叉树的根节点 ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:示例 1: 输入:root = [2,1,3] 输出:true 示例 2: 输入:root = [5,1,4,null,null,3,6] 输出:false 解释:根节点的值是 5 ,但是右子节点的值是 4 。 解题思路 问

2401_85548793的博客 1143

力扣最热一百题——验证二叉搜索树

力扣最热一百题,验证二叉搜索树,两种方法,超详细解释,新手也能学会!!!

WenJGo的博客 1685

98. 验证二叉搜索树【 力扣(LeetCode) 】

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

yyh520025的博客 1017

验证二叉搜索树-leetcode力扣第98题

验证二叉搜索树-leetcode.98题目地址求解要点源码 题目地址 https://leetcode-cn.com/problems/validate-binary-search-tree/ 求解要点 中序遍历二叉树,判断值是否比前一个值大就可以了。 C语言中,函数变量中赋值&的意思是,这个函数按引用传递参数,就是可以在函数体内修改实参的值,而函数返回到主函数后,实参的值也会随之改变。 ...

Manlok的技术博客 303

瑞_力扣LeetCode_二叉搜索树相关题

本文章为瑞_系列专栏之《刷题》的力扣LeetCode系列,主要以力扣LeetCode网的题进行解析与分享.本文主要是配合《瑞_数据结构与算法_二叉搜索树》对二叉搜索树的知识进行提升和拓展

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 1242

LeetCode 98. 验证二叉搜索树 解题总结

本文总结了验证二叉搜索树(BST)的两种主流解法:递归边界约束法和中序遍历法。递归法通过为每个节点划定取值范围(左边界<节点值<右边界)来验证,需注意使用Long类型避免int极值溢出。中序遍历法利用BST中序序列严格递增的特性,有递归和迭代两种实现。两种方法时间复杂度均为O(n),空间复杂度为O(h)。常见易错点包括边界类型错误、BST定义理解偏差等。面试中推荐中序遍历法,其代码简洁直观;若需严格实现BST定义或处理深度大的树,可选用递归边界法或迭代中序遍历法。

m0_64198455的博客 921

LeetCode98.验证二叉搜索树

LeetCode98.验证二叉搜索树

Love Peace 826
上一篇: 两篇毕业论文致谢同一个女朋友?大型翻车现场!
下一篇: 记一次不太成功的频繁 full gc 排查过程
编程IT圈
博客等级 码龄6年 1130粉丝 544原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

编程IT圈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值