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

递归(通过形参改变取值范围):

class Solution {
public:bool func(TreeNode *root,long long lower,long long upper){if(root==nullptr)return true;if(root->val<=lower||root->val>=upper)return false;return func(root->left,lower,root->val)&&func(root->right,root->val,upper);}bool isValidBST(TreeNode* root) {return func(root,LONG_MIN,LONG_MAX);}
};

递归(中序遍历)(通过比较当前节点值和上一个节点值):

中序遍历是左中右的顺序,刚刚好搜索二叉树的特点是左<中<右。

class Solution {
public:TreeNode *pre=nullptr;bool isValidBST(TreeNode* root) {if(root==nullptr)return true;bool left=isValidBST(root->left);if(pre!=nullptr&&pre->val>=root->val)return false;pre=root;bool right=isValidBST(root->right);return left&&right;}
};

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

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

相关文章

嵌入式学习笔记(17)代码重定位实战 上篇

3.5.1任务&#xff1a;在iSRAM中将代码从0xd0020010重定位到0xd0024000 注解&#xff1a;本练习对代码本身运行无实际意义&#xff0c;我们做这个重定位纯粹是为了练习重定位技能。但是某些情况重定位就是必须的&#xff0c;譬如在uboot中。 3.5.2思路 &#xff08;1&#xff…

蓝队追踪者工具TrackAttacker,以及免杀马生成工具

蓝队追踪者工具TrackAttacker&#xff0c;以及免杀马生成工具。 做过防守的都知道大HW时的攻击IP量&#xff0c;那么对于这些攻击IP若一个个去溯源则显得效率低下&#xff0c;如果有个工具可以对这些IP做批量初筛是不是更好&#xff1f; 0x2 TrackAttacker获取 https://githu…

算法设计与分析 | 最多约数

题目&#xff1a; 正整数x的约数是能整除x的正整数。正整数x 的约数个数记为div(x)。例如&#xff0c;1&#xff0c;2&#xff0c;5&#xff0c;10 都是正整数10 的约数&#xff0c;且div(10)4。设a 和b 是2 个正整数&#xff0c;a≤b&#xff0c;找出a和b之间约数个数最多的数…

随机数算法,SQL

SELECT* FROMprizes_config WHEREweight > ( SELECT FLOOR( RAND() * MAX( weight )) FROM prizes_config ) order by weight asc-- LIMIT 1;记录 id 权重 1 5 2 10 3 50 4 100 找权重最大的那个值&#xff0c;调用rand()函数&#…

2023国赛数学建模E题思路分析 - 黄河水沙监测数据分析

# 1 赛题 E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响&#xff0c; 以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位…

如何从ChatGPT中获得最佳聊天对话效果

从了解ChatGPT工作原理开始&#xff0c;然后从互动中学习&#xff0c;这是一位AI研究员的建议。 人们利用ChatGPT来撰写文章、论文、生成文案和计算机代码&#xff0c;或者仅仅作为学习或研究工具。然而&#xff0c;大多数人不了解它的工作原理或它能做什么&#xff0c;所以他…

电商3D资产优化管线的自动化

如果你曾经尝试将从 CAD 程序导出的 3D 模型上传到 WebGL 或 AR 服务&#xff0c;那么可能会遇到最大文件大小、永无休止的进度条和糟糕的帧速率等问题。 为了创作良好的在线交互体验&#xff0c;优化 3D 数据的大小和性能至关重要。 这也有利于你的盈利&#xff0c;因为较小的…

2023高教社杯全国大学生数学建模竞赛选题建议

如下为C君的2023高教社杯全国大学生数学建模竞赛&#xff08;国赛&#xff09;选题建议&#xff0c; 提示&#xff1a;DS C君认为的难度&#xff1a;C<B<A&#xff0c;开放度&#xff1a;B<A<C 。 D、E题推荐选E题&#xff0c;后续会直接更新E论文和思路&#xf…

MaskVO: Self-Supervised Visual Odometry with a Learnable Dynamic Mask 论文阅读

论文信息 题目&#xff1a;MaskVO: Self-Supervised Visual Odometry with a Learnable Dynamic Mask 作者&#xff1a;Weihao Xuan, Ruijie Ren, Siyuan Wu, Changhao Chen 时间&#xff1a;2022 来源&#xff1a; IEEE/SICE International Symposium on System Integration …

正版软件 | CloudDrive 多云盘本地挂载管理工具

前言&#xff1a; CloudDrive 是一个强大的多云盘管理工具&#xff0c;提供一站式的多云盘解决方案&#xff0c;包括云盘本地挂载。旨在无缝集成多个云存储服务&#xff0c;统一整合到一个界面。轻松管理和访问所有云存储服务&#xff0c;无需在不同的应用程序和界面之间切换。…

【Go基础】编译、变量、常量、基本数据类型、字符串

面试题文档下链接点击这里免积分下载 go语言入门到精通点击这里免积分下载 编译 使用 go build 1.在项目目录下执行 2.在其他路径下编译 go build &#xff0c;需要再后面加上项目的路径&#xff08;项目路径从GOPATH/src后开始写起&#xff0c;编译之后的可执行文件就保存再…

matlab和python做zscore结果不一样的问题

解决matlab和python做zscore标准化结果不一样的问题 总结: matlab和python做zscore时使用的求std公式的默认方法有差异&#xff0c;导致了结果差异。 想要结果相同则使用以下代码&#xff1a; td rand(50,15,39)%td是三维矩阵&#xff0c;求zscore结果 #Python代码&#xf…

人工智能客服:是跨境电商未来的趋势吗?

随着跨境电商的快速发展&#xff0c;客户服务成为了商家们越来越关注的焦点。而在客户服务领域中&#xff0c;人工智能客服正逐渐崭露头角。那么&#xff0c;人工智能客服是否是跨境电商未来的趋势呢&#xff1f;本文将探讨这个问题&#xff0c;并揭示人工智能客服的潜力和优势…

JS返回NodeList和HTMLCollection详解

HTML DOM 集合 (Collection) 概述 HTML DOM 集合 (Collection) 是一组 HTML 元素&#xff0c;这些元素可以通过 JavaScript 代码进行访问和操作。HTML DOM 集合通常由一个或多个 HTML 元素组成&#xff0c;并提供了访问和操作这些元素的方法。HTML DOM 集合在 JavaScript 中非常…

【前端demo】CSVJSON转换器 原生实现:CSV转换为JSON,JSON转换为CSV

文章目录 效果过程textareaTooltip提示工具按钮的min-width判断输入是否是CSV或JSONJSON与CSV样例JSON转为CSVCSV转为JSON不足之处 代码HTMLCSSJS 其他demo 效果 效果预览&#xff1a;CSV&JSON Converter (codepen.io) 参照的预览&#xff1a;JSV Converter(gpaiva00.git…

Redis未授权访问漏洞实战

文章目录 概述Redis概述Redis 介绍Redis 简单使用Redis未授权漏洞危害 漏洞复现启动靶场环境POC漏洞验证EXP漏洞利用 总结 本次测试仅供学习使用&#xff0c;如若非法他用&#xff0c;与平台和本文作者无关&#xff0c;需自行负责&#xff01; 概述 ​ 本文章主要是针对于vulh…

5、Spring之Bean生命周期源码解析(销毁)

Bean的销毁过程 Bean销毁是发送在Spring容器关闭过程中的。 在Spring容器关闭时,比如: AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); UserService userService = (UserService) context.getBean("userSe…

如何给新链表的tail尾结点尾插?

没有哨兵卫&#xff1a; //当没有哨兵卫时&#xff0c;第一个结点&#xff1a; if(tailNULL) {tailcur; } //没有哨兵卫但不是第一个结点或者有哨兵卫&#xff1a; else {tail->nextcur;tailtail->next; } 有哨兵卫&#xff1a; tail->nextcur;tailtail->next;

​Vue + Element UI前端篇(二):Vue + Element 案例 ​

Vue Element UI 实现权限管理系统 前端篇&#xff08;二&#xff09;&#xff1a;Vue Element 案例 导入项目 打开 Visual Studio Code&#xff0c;File --> add Folder to Workspace&#xff0c;导入我们的项目。 安装 Element 安装依赖 Element 是国内饿了么公司提…

Python入门学习12

一、Python包 什么是Python包 从物理上看&#xff0c;包就是一个文件夹&#xff0c;在该文件夹下包含了一个 __init__.py 文件&#xff0c;该文件夹可用于包含多个模块文件。从逻辑上看&#xff0c;包的本质依然是模块 包的作用: 当我们的模块文件越来越多时,包可以帮助我们管…