day146—递归—验证二叉搜索树(LeetCode-98)

题目描述

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

有效二叉搜索树定义如下:

  • 节点的左子树只包含严格小于当前节点的数。
  • 节点的右子树只包含严格大于当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

示例 1:

输入:root = [2,1,3]输出:true

示例 2:

输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4 。

提示:

  • 树中节点数目范围在[1, 104]
  • -231 <= Node.val <= 231 - 1

解决方案:

这段代码的核心功能是判断一棵二叉树是否为有效的二叉搜索树(BST)(满足:左子树所有节点值 < 当前节点值 < 右子树所有节点值,且左右子树也必须是 BST),采用「递归 + 上下界约束」的思路逐节点校验,时间复杂度O(n)n为节点数),空间复杂度O(h)h为树的高度),是该问题的经典最优解法。

核心逻辑

代码的核心是为每个节点设定严格的数值上下界,递归校验节点值是否在合法区间内,同时将约束传递给左右子树:

  1. 递归辅助函数f:参数为当前节点node、当前节点值的下界l(左边界)、上界r(右边界):
    • 边界条件:空节点直接返回true(空树是合法的 BST);
    • 当前节点值校验:取出节点值dx,若dx小于等于下界l或大于等于上界r,说明违反 BST 规则,返回false
    • 递归校验子树:
      • 左子树的上下界更新为(l, dx)(左子树所有节点值必须 < 当前节点值dx);
      • 右子树的上下界更新为(dx, r)(右子树所有节点值必须 > 当前节点值dx);
      • 只有左右子树都合法,才返回true
  2. 主函数isValidBST
    • 调用辅助函数时,为根节点设定初始上下界:下界为LLONG_MIN(long long 类型的最小值)、上界为LLONG_MAX(long long 类型的最大值),覆盖所有整数范围,避免数值溢出;
    • 最终返回辅助函数的校验结果。

总结

  1. 核心思路:通过递归传递上下界约束,而非仅对比当前节点与左右子节点(避免 “仅局部满足、整体不满足” 的错误);
  2. 关键细节:使用LLONG_MIN/LLONG_MAX(需包含<climits>头文件)而非普通 int 极值,防止节点值为 int 最大值 / 最小值时的溢出问题;
  3. 效率特点:每个节点仅被校验一次,时间O(n);递归栈空间取决于树的高度,平衡树为O(log n),退化为链表时为O(n)

函数源码:

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: bool f(TreeNode* node,long long l,long long r){ if(!node) return true; int dx=node->val; if(l>=dx||dx>=r) return false; return f(node->left,l,dx) && f(node->right,dx,r); } bool isValidBST(TreeNode* root) { return f(root,LLONG_MIN,LLONG_MAX); } };

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ST表】洛谷 P3865 【模板】ST 表 RMQ 问题

View Post【ST表】洛谷 P3865 【模板】ST 表 & RMQ 问题题目 https://www.luogu.com.cn/problem/P3865 题解 ST表(Sparse Table,稀疏表)主要用来解决 RMQ(区间最大/最小值查询)问题。主要应用倍增思想,可以实…

2026苏州100平左右新房装修指南:高性价比公司全揭秘 - 品牌测评鉴赏家

2026苏州100平左右新房装修指南:高性价比公司全揭秘一、100 平新房装修痛点大剖析 在苏州,100 平左右的新房大多是紧凑三居或舒适两居 ,看似面积刚刚好,可一旦进入装修环节,各种麻烦事就接踵而至。很多朋友都向我…

2026苏州二手房局部翻新大揭秘!这些公司你不能错过 - 品牌测评鉴赏家

2026苏州二手房局部翻新大揭秘!这些公司你不能错过一、苏州二手房翻新热潮 在当下的苏州房地产市场中,二手房的交易热度持续攀升。数据显示,苏州二手房市场成交量在近期呈现出明显的增长态势,越来越多的人选择购入…

苏州装修公司口碑大揭秘!这几家名列前茅 - 品牌测评鉴赏家

苏州装修公司口碑大揭秘!这几家名列前茅一、装修公司的重要性 家,是我们心灵的避风港,是生活中最温暖的存在。而装修,则是赋予这个避风港独特魅力和舒适体验的关键环节。选择一家靠谱的装修公司,对于打造理想家园…

Go 语言 GMP 调度模型深度解析 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

HTML一键打包EXE工具2.2.0版本重磅更新 - 2026年最新版本稳定性大幅提升

HTML打包EXE工具迎来2026年首个重要版本更新&#xff01;2.2.0版本专注于稳定性提升和用户体验优化&#xff0c;修复了多个影响使用的关键问题&#xff0c;新增清理本地激活数据功能&#xff0c;为开发者提供更可靠的HTML转EXE解决方案。 CSDN免积分下载最新版本 【免费】HTM…

2024年9月GESP真题及题解(C++七级): 小杨寻宝

2024年9月GESP真题及题解(C七级): 小杨寻宝 题目描述 小杨有一棵包含 nnn 个节点的树&#xff0c;树上的一些节点放置有宝物。 小杨可以任意选择一个节点作为起点并在树上移动&#xff0c;但是小杨只能经过每条边至多一次&#xff0c;当小杨经过一条边后&#xff0c;这条边就…

苏州装修性价比大揭秘!哪家公司才是真王者? - 品牌测评鉴赏家

苏州装修性价比大揭秘!哪家公司才是真王者?一.苏州装修市场现状 在苏州,装修市场可谓是一片繁荣景象,各类装修公司如雨后春笋般涌现,数量众多让人眼花缭乱。据不完全统计,苏州大大小小的装修公司不下数百家 ,从…

HBase与Flink CDC:实时数据同步技术

HBase与Flink CDC:实时数据同步技术 关键词:HBase、Flink CDC、实时数据同步、变更数据捕获、分布式系统、数据集成、增量处理 摘要:本文深入探讨基于HBase与Flink CDC的实时数据同步技术体系。首先解析HBase存储架构与Flink CDC核心原理,通过数学模型论证数据一致性保障机…

大数据环境下空间数据分析的最佳实践

大数据时代空间数据分析&#xff1a;从踩坑到落地的7个最佳实践 引言&#xff1a;你是否被“海量空间数据”卡住了&#xff1f; 做外卖平台的朋友跟我吐槽&#xff1a;“我们有100万骑手的轨迹数据&#xff0c;想分析他们的停留热点&#xff0c;用ArcGIS跑了3天还没出结果&…

学长亲荐10个AI论文网站,继续教育学生轻松搞定论文格式!

学长亲荐10个AI论文网站&#xff0c;继续教育学生轻松搞定论文格式&#xff01; AI 工具如何让论文写作更轻松 在当今信息爆炸的时代&#xff0c;继续教育学生面对论文写作时常常感到压力山大。无论是格式要求、内容逻辑还是语言表达&#xff0c;都可能成为阻碍完成论文的“拦路…

2026年诚信的西山区心理咨询,昆明心理咨询,南市区心理咨询公司行业优质名录 - 品牌鉴赏师

引言在当今社会,心理健康问题日益受到人们的关注,心理咨询行业也随之蓬勃发展。在昆明西山区、南市区等地,心理咨询公司如雨后春笋般涌现。为了帮助消费者在众多的心理咨询公司中挑选出优质、诚信的机构,我们依据国…

微信小程序毕设项目推荐-基于springboot的保护濒危动物公益网站系统公益网站建设、动物保护系统、濒危物种网站【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2024年9月GESP真题及题解(C++七级): 矩阵移动

2024年9月GESP真题及题解(C七级): 矩阵移动 题目描述 小杨有一个 nmn \times mnm 的矩阵&#xff0c;仅包含 01? 三种字符。矩阵的行从上到下编号依次为 1,2,…,n1,2,\dots, n1,2,…,n&#xff0c;列从左到右编号依次为 1,2,…,m1, 2, \dots, m1,2,…,m。小杨开始在矩阵的左上…

全网最全8个AI论文工具,专科生轻松搞定论文格式规范!

全网最全8个AI论文工具&#xff0c;专科生轻松搞定论文格式规范&#xff01; AI 工具的崛起&#xff0c;让论文写作不再难 在当今这个信息爆炸的时代&#xff0c;论文写作已经成为专科生学习生活中不可或缺的一部分。无论是课程论文、毕业论文还是科研报告&#xff0c;都需要严…

CSGO财富导师成了全网通缉犯,整个群都在喊“砍他”

&#x1f4a5; 最近超多“导狗”人设彻底崩塌&#xff01; 被全网人肉通缉&#xff0c;几千人的会员群直接炸锅‼️ “报警&#xff01;砍他&#xff01;”骂声此起彼伏&#xff0c;那叫一个热闹… 这就是我一直不让你们听所谓“博主分析饰品走势”、不让跟风炒饰品的原因&…

亲测好用!10个AI论文平台测评:本科生毕业论文神器推荐

亲测好用&#xff01;10个AI论文平台测评&#xff1a;本科生毕业论文神器推荐 2026年AI论文平台测评&#xff1a;为什么需要这份榜单&#xff1f; 随着人工智能技术的不断发展&#xff0c;越来越多的本科生开始借助AI工具辅助毕业论文写作。然而&#xff0c;面对市场上琳琅满目…

AI应用架构师必知:智能客户AI服务平台的模型部署架构设计

AI应用架构师必知&#xff1a;智能客户AI服务平台的模型部署架构设计 关键词&#xff1a;智能客户AI服务平台、模型部署、架构设计、AI应用架构师、云计算、容器化、模型优化 摘要&#xff1a;本文深入探讨智能客户AI服务平台的模型部署架构设计&#xff0c;旨在为AI应用架构师…

Day 5 Art 01: Flutter 框架下的状态管理哲学 - 为什么 UI = f(State) 是鸿蒙开发的基石?

前言&#xff1a;在混沌中寻找秩序的终极算法 在移动开发漫长的演进史中&#xff0c;开发者始终在与一个幽灵作战——复杂性。当应用从简单的展示页面演变为具备实时交互、多端协同、本地持久化的复杂系统时&#xff0c;逻辑与 UI 之间的连线往往会交织成一张令人绝望的乱麻。…

数字图像处理基础知识(一)

1.数字图像处理处理的是什么呢&#xff0c;处理的就是图像 2.计算机视觉和机器视觉 3.图像的处理包括缺陷检测&#xff0c;目标识别&#xff0c;尺寸测量等。 4.图像的滤波&#xff0c;图像的变换&#xff0c;图像分割 5.数字图像处理基础 6.空间域图像处理 图像的反转 对数变换…