LeetCode 刷题 [C++] 第98题.验证二叉搜索树

题目描述

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

  • 节点的左子树只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。
    在这里插入图片描述

题目分析

由题目可知,二叉搜索树的特征:二叉搜索树的左子树上所有节点的值均小于根节点;右子树上所有节点的值均大于根节点的值;它的左右子树也是二叉搜索树。
因此,我们可以使用递归思想来解决这个问题:

  1. 递归结束条件为当前访问节点为空时,返回true;
  2. 检查当前节点的左子树,若返回false,则直接返回,结束查询;
  3. 检查当前节点的值是否合法,不合法返回false;
  4. 检查当前节点的右子树,并返回其和左子树的与值。

Code

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

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

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

相关文章

二级水平导航菜单栏的实现

1. 这个是本人设计的一带一路的二级水平导航栏HTML代码&#xff1b; 这里最后实现的效果是鼠标悬停在导航栏上面&#xff0c;就会显示下面的4个部分页面&#xff0c;这里只是以评论热 点作为例子&#xff0c;其他的类似&#xff1b; 2.首先要设计DIV&#xff0c;然后利用无…

Android 消息恢复 - 如何在 Android 上检索已删除的短信

最新调查显示&#xff0c;手机每天发送和接收的短信数以亿计&#xff0c;尤其是Android智能手机。但与此同时&#xff0c;Android消息丢失也每天都在发生。因此&#xff0c;如何恢复Android手机上已删除的短信对于那些在设备中保存了一些重要信息的人来说似乎非常重要。 在这里…

手机中常用的传感器

文章目录 重力传感器 Gravity sensor三维坐标 加速度传感器 Accelerometer三维坐标 陀螺仪 Gyroscope三维坐标 磁力传感器 Magnetometer三维坐标 光线传感器 Light Sensor接近传感器 Proximity Sensor其他传感器协同工作相机自动调整 传感器有唤醒和非唤醒属性 关于重力传感器和…

前端开发报错:Cannot find module ‘@angular-devkit/schematics‘ Require stack:

1、背景 由于近期需要搭建angular ng-zorro-mobile ionic 框架集成项目&#xff0c;但是在开发过程中遇到了报错&#xff1a; Cannot find module angular-devkit/schematics Require stack 2、原因 这里产生的原因是因为我当时遇到另外一个问题&#xff0c;误导我以为是版…

综合对比各家云服务厂商

云服务厂商的综合对比可以从多个维度进行&#xff0c;包括稳定性、操作便捷性、生态、价格以及安全性等。以下是对几家主流云服务厂商的综合对比&#xff1a; 阿里云&#xff1a;阿里云在稳定性、安全性、性价比、产品功能与生态方面都处于较为领先的地位。其拥有全球领先的云…

数字经济的新篇章:Web3的全球影响

随着区块链技术的飞速发展&#xff0c;Web3作为其重要组成部分&#xff0c;正在成为数字经济的新篇章&#xff0c;并在全球范围内展现出巨大的影响力。本文将深入探讨Web3对全球经济的影响&#xff0c;以及它所带来的新机遇和挑战。 1. Web3的定义与特点 Web3是建立在区块链技…

MyBatis和MyBatis-Plus的差别和优缺点

MyBatis和MyBatis-Plus的主要差别在于功能和特性方面。MyBatis是一个优秀的持久层框架&#xff0c;它支持自定义SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息&#xff0c;将…

【前端】CSS

定义&#xff1a;层叠样式表 Cascading Style Sheets&#xff0c;控制页面的展示效果 1.基本语法规范 选择器 1/n条声明 选择器决定针对谁修改声明决定修改啥声明的属性是键值对&#xff0c;使用 ; 区分键值对&#xff0c;使用 : 区分键和值 2.格式 style标签可放在head标…

android开发学习-内容共享(server+client)

在应用之间共享数据 通过ContentProvider封装数据 ContentProvider使用的Uri语法结构如下&#xff1a; content://authority/data_path/id content&#xff1a;通用前缀&#xff0c;表示该uri用于ContentProvider定位资源 authority&#xff1a;是授权者名称&#xff0c;用…

【Python--读获取目录下所有csv文件中的均值与偏态】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Python &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; python练习题 读获取目录下所有csv文件中的均值与偏态按照均值和偏态最大值进行排序完整代码 读获取目录下…

基于OpenCV的图形分析辨认03

目录 一、前言 二、实验目的 三、实验内容 四、实验过程 一、前言 编程语言&#xff1a;Python&#xff0c;编程软件&#xff1a;vscode或pycharm&#xff0c;必备的第三方库&#xff1a;OpenCV&#xff0c;numpy&#xff0c;matplotlib&#xff0c;os等等。 关于OpenCV&…

LeetCode.2917. 找出数组中的 K-or 值

题目 2917. 找出数组中的 K-or 值 分析 这道题其实是要我们求第i位二进制为1的元素个数至少为k&#xff0c;把符合条件的2^i全部加到一起。 因此&#xff0c;我们的思路就是枚举数组的每一位&#xff0c;并且进行以下两个步骤&#xff1a; 统计所有元素第i位1的个数cnt。…

ubuntu 中进入python 编辑如何退出到命令行

文章目录 在Python解释器&#xff08;交互式命令行&#xff09;中&#xff0c;你可以使用 exit()函数或 CtrlD&#xff08;在Unix/Linux/macOS上&#xff09;或 CtrlZ然后输入 Enter&#xff08;在Windows上&#xff09;来退出Python解释器并返回到命令行。 以下是具体的步骤&a…

SpringSecurity配置MD5加密方式

目录 一、需求 二、代码实现 2.1、MD5加密工具类 2.2、实现MD5加密

【论文阅读】DeepLab:语义图像分割与深度卷积网络,自然卷积,和完全连接的crf

【论文阅读】DeepLab:语义图像分割与深度卷积网络&#xff0c;自然卷积&#xff0c;和完全连接的crf 文章目录 【论文阅读】DeepLab:语义图像分割与深度卷积网络&#xff0c;自然卷积&#xff0c;和完全连接的crf一、介绍二、联系工作三、方法3.1 整体结构3.2 使用空间金字塔池…

弹性地基梁matlab有限元编程 | 双排桩支护结构 | Matlab源码 | 理论文本

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

mysql bug( InnoDB: Error number 22),表突然不能读取

mysql bug&#xff08; InnoDB: Error number 22&#xff09;&#xff0c;表突然不能读取 bug最开始的bug&#xff1a;表突然不能读取关闭mysql容器&#xff0c;再次重启失败 解决方案不重建容器的几种可能措施重建容器重建如果懒得打命令或者忘记命令可能的run bug&#xff1a…

【目标检测】旋转目标检测DOTA格式转YOLO格式标注

准备DOTA格式数据集&#xff1a; dota_dataset -- images |----- train |----- val -- labels |----- train |----- train_original |----- val |----- val_original 修改class_mapping和图片格式&#xff1a; ultralytics/data/converter.py convert_dota_to_yolo_obb() 转换标…

从零学算法128

128.给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums [100,4,200,1,3,2] 输出&#xff1a;4…

打破界限,释放创新:一键将HTML转化为PDF

在互联网时代&#xff0c;HTML作为网页的标准语言&#xff0c;承载着无数的信息与创意。然而&#xff0c;有时我们需要将这些在线内容转化为可打印、可分享的PDF格式。这时&#xff0c;一款高效、便捷的转换工具就显得尤为重要。 首先&#xff0c;我们要进入首助编辑高手主页面…