leetcode98. 验证二叉搜索树(java)

验证二叉搜索树

  • leetcode98. 验证二叉搜索树
    • 题目描述
  • 递归法
    • 解题思路
    • 代码演示
  • 中序遍历解法
    • 解题思路
    • 代码演示
  • 二叉树专题

leetcode98. 验证二叉搜索树

leetcode 98.验证二叉搜索树
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/validate-binary-search-tree

题目描述

给你一个二叉树的根节点 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

递归法

解题思路

搜索二叉树是要满足左节点比头节点小,头节点比右节点小,
左子树上的最大值小于头节点,右子树的最小值,大于头节点、
在递归时,除了要判断左小于头,头小于右,
还有判断左边最大值和右边最小值分别和头节点比较,
因此我们要对递归遍历进行改造,加上最大值和最小值。

代码演示

public boolean isValidBST(TreeNode root) {//初始时 传的是 null ,nullreturn process1(root,null,null);}/*** min 最小值* max 最大值*/public boolean process1(TreeNode root,TreeNode min,TreeNode max){//base case if(root == null){return true;}//遍历右树时,任何值不能小于min 的值 ,否则返回false;if(min != null && root.val <= min.val){return false;}//遍历左树时,任何值不能大于max 的值 ,否则返回false;if(max != null && root.val >= max.val){return false;}//左树上的任何值 不能大于头节点的值,因此最大值传rootboolean isLeft = process1(root.left,min,root);//右树上的任何值 不能小于头节点的值,因此最小值传rootboolean isRight = process1(root.right,root,max);return isLeft && isRight;}

中序遍历解法

解题思路

中序遍历结果是: 左 头 右。
搜索二叉树特性:左 < 头 < 右,
因此遍历出来的顺序是个递增的结构,
根绝这个特性来判断是不是搜搜二叉树

代码演示

List<TreeNode> ans = new ArrayList<>();public boolean isValidBST(TreeNode root) {process(root);for(int i = 1; i < ans.size();i++){if(ans.get(i).val <= ans.get(i-1).val){return false;}}return true;}/*** 中序遍历*/public void process(TreeNode root){if(root == null){return;}process(root.left);ans.add(root);process(root.right);}

二叉树专题

leetcode700. 二叉搜索树中的搜索

leetcode95–不同的二叉搜索树 I

leetcode–二叉搜索树中第K小的元素

力扣-根据前序和后序遍历构造二叉树

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

excel手机版_excel仓库管理手机版导出软件

在生产企业管理经营中、时常需要采用excel表格来制作仓库管理&#xff0c;然而excel制作的仓库只能在电脑端操作、非常的不方便。是不是可以由手机来替代同时也可以实现多人协同的管理方式。 事实现移动端的功能非常的强大、利用云服务计算就可以达到excel仓库管理的效果&#…

初识EasyUI

2.1何为EasyUI. EasyUI的全称是“JQuery EasyUI”&#xff0c;是一种基于jQuery、Angular、Vue和React的用户界面的插件的集合&#xff0c;EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript&#xff0c;也不需要对css样…

养鸡场的计算机管理,养鸡场管理系统7.3 免费版

综合养鸡场管理系统是一款专业的养鸡场专业必备软件&#xff0c;用户在这里可以很好的对鸡场进项系统化的管理&#xff0c;有需要的朋友们快来东坡下载吧&#xff01; 进鸡及存栏、饲养管理、鸡蛋管理、售鸡管理、饲料管理、药品管理、财务管理八个功能模块 软件介绍 该系统功能…

财务软件Linux版本,免费财务会计软件GnuCash 2.6.17发布

GnuCash开发团队几天前宣布推出其个人和小型企业财务会计软件GnuCash 2.6.17的新维护版本&#xff0c;其中包含各种错误修复和一些翻译更新。 GnuCash 2.6.16之后的更改包括&#xff1a; 如果有交易&#xff0c;请防止更改某些帐户选项 修复Windows的网上银行向导崩溃 打开帐户…

e树企业管理系统 服务器连接,e树企业管理系统erp软件

e树企业管理系统erp软件是一款功能强大的进销存管理软件&#xff0c;软件操作简单&#xff0c;功能实用&#xff0c;支持进销存BOM生产MRP质检(IQC/FQC/PQC)车间日报/简单排产应收应付固定资产实际成本算法财务&#xff0c;欢迎需要的用户下载体验! 功能介绍 1>.进销存BOM生…

致远a8-v5-6.0协同管理软件_易达酒吧管理软件下载-易达酒吧管理软件v10.0免费版...

易达酒吧管理软件顾名思义是一款功能强大&#xff0c;专业实用的优秀酒店管理软件&#xff0c;软件根据服务性行业实际管理要求打造&#xff0c;软件具有会员销售、退还、存款、禁用(挂失、作废、临时禁用)等功能&#xff0c;相当的实用。 基本简介 易达酒吧管理支持打折、计次…

销售管理系统软件免费版(超实用销售管理系统)

说到销售管理系统&#xff0c;相信很多企业并不陌生&#xff0c;是因为销售管理系统已经成为大多数企业最不可或缺的工具。销售管理系统通常提供完整的销售管理功能模块&#xff0c;帮助企业对销售流程进行全面管理&#xff0c;提升销售效率&#xff0c;降低运作成本。该软件支…

实用工具 | 语音文本对齐MFA的安装及使用

Montreal Forced Aligner&#xff08;MFA&#xff09;[1]是一个用于将音频和文本进行对齐的工具。它可以用于语音识别、语音合成和发音研究等领域。MFA支持多种语言和语音&#xff0c;用户可以根据需要自定义训练模型。 本博客介绍如何使用MFA对音频和文本进行对齐&#xff0c…

几款免费开源的企业管理软件

1、2bizbox 官方地址&#xff1a;http://www.2bizbox.cn/ 2BizBox就是为中小制造企业量身定做的高品质ERP 。 2BizBox ERP软件不但永久免费&#xff0c;还提供了完备的后续增值服务&#xff1a;云ERP、培训、实施、二次开发、BizCare客户保障计划等,这些服务为企业实施ERP提供…

2022好用的手机库存管理软件排行榜前十名 手机库存管理app

市面上的服装进销存软件那么多?该如何选到适合自己的那款呢?最好的方法是看看大家的选择。 大众的选择即是合适的,这是有道理的,顺便看看大家的评价来选择,就不会差了。小编整理了最受欢迎的十大进销存软件,希望对大家有用。 第一名:秦丝进销存 软件介绍:秦丝主要集采购、销…

易软门诊管理9.1破解版

1、升级之前一点做好软件的数据备份和软件备份&#xff0c;以防升级不成功造成暂时不能用。 备份包含&#xff08;软件安装目录的database文件夹和YRclinic文件&#xff09; 2、每次升级完毕&#xff0c;系统默认的用户Admin拥有软件所有功能的操作权限。自己分配的将没有此权…

库存管理 库存管理软件榜单 库存管理软件排名 库存管理提高效率的办法

做生意的最不可少的软件就是进销存,告别手工记账,大大地提高运营效率。 但是市面上的进销存软件那么多,一个个去试要花费很多精力,最好的运气是一眼相中。 今天小编就来整理老板们最推荐的10款进销存软件,希望能帮到你。 第一名:秦丝进销存 推荐指数:★★★★★ 秦丝主以Sa…

库存管理软件免费版软件哪个好用?

阅读本文您将了解&#xff1a;1.库存管理系统软件免费的有哪些&#xff1b;2.库存管理系统软件怎么选。 一、库存管理系统软件免费的有哪些 1、简道云 官网&#xff1a;https://www.jiandaoyun.com 简道云仓库管理系统涵盖仓库管理全流程&#xff0c;可以进行在线填报数据&am…

【自动化测试基础】Appium自动化环境搭建保姆级教程

APP自动化测试运行环境比较复杂&#xff0c;稍微不注意安装就会失败。我见过不少朋友&#xff0c;装了1个星期&#xff0c;Appium 的运行环境还没有搭好的。 搭建环境本身不是一个有难度的工作&#xff0c;但是 Appium 安装过程中确实存在不少隐藏的比较深的坑&#xff0c;如果…

【AI】InsCode AI 创作助手 --使用心得

CSDN AI写作助手上线了&#xff01;InsCode AI 创作助手不仅能够帮助用户高效创作文章&#xff0c;而且能够作为对话式AI回答你想知道的问题。成倍提高生产力&#xff01;欢迎大家使用新功能后分享自己的使用心得与建议&#xff01; 文章目录 一、你平时会使用这类AI工具吗&am…

实训第一天

目录 主流的关系数据库 非关系型数据库 Mysql的启动和停止 Mysql登录方式本地登录 远程登录 查看mysql数据库 创建数据库 使用数据库 删除数据库 Mysql结构化查询语句 mysql 数据类型 数值类型 字符类型 日期类型 唯一约束与主键约束 主流的关系数据库 mysql,db2,oracle&a…

常用编码格式整理

什么是字符集&#xff0c;字符编码&#xff0c;编码和解码&#xff1a; 字符集&#xff1a; 将一些自然语言中的字符组成一个集合; 字符编码&#xff1a; 字符编码&#xff0c;就是建立一套自然语言中的“字符”跟计算机能够存储 处理的二进制数的映射的规则。 即在一个字符集内…

2023新版Spring6全新讲解-核心内容之事务管理

Spring核心之事务 一、JdbcTemplate JdbcTemplate是Spring框架对JDBC操作进行的封装&#xff0c;可以简化方便对数据库的操作。 1.数据库表结构 准备一张普通的表 CREATE TABLE t_student (id int NOT NULL AUTO_INCREMENT,name varchar(32) DEFAULT NULL,age int DEFAULT N…

树和子树的定义

在数据结构中存在一种叫“树”的结构。 树的定义&#xff1a; 树&#xff08;tree&#xff09;是由n&#xff08;n>0)个节点&#xff08;或元素&#xff09;组成的有限集合&#xff08;记为T&#xff09;。 如果n0&#xff0c;它是一棵空树&#xff0c;这是树的特征。如果…