Leetcode 98. 验证二叉搜索树-程序员宅基地

技术标签: 二叉树  

98. 验证二叉搜索树

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

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

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

示例 1:

输入:
    2
   / \
  1   3
输出: true

示例 2:

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

     看到提的时候感觉很简答,只要简单遍历、判断就好,提交后发现错误,原来是要求左子树的所有节点都应小于父亲节点,而不仅仅是左子节点小于父亲节点即可。改正递归的参数,加入最大、最小值代表可以合法取值的范围,就能解。

class Solution {
public:
	bool Judge(TreeNode* t,int low,int high)
	{
		if (t == NULL)
			return 1;
		if (t->left && t->right)
		{
			if ((low == NULL || t->left->val > low) && t->left->val < t->val && t->val < t->right->val && (high ==NULL ||t->right->val < high))
				return Judge(t->left, low, t->val) && Judge(t->right, t->val, high);
			else
				return 0;
		}
		else if (t->left)
		{
			if ((low==NULL|| t->left->val > low) &&t->left->val < t->val)
				return Judge(t->left, low, t->val);
			else
				return 0;
		}
		else if (t->right)
		{
			if (t->right->val > t->val && (high == NULL || t->right->val < high))
				return Judge(t->right, t->val, high);
			else
				return 0;
		}
		else
			return 1;
		return 1;

	}
	bool isValidBST(TreeNode* root) {
		return Judge(root,NULL, NULL);
	}
};

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Yanpr919/article/details/98590780

智能推荐

基于electron的桌面串口工具应用(node-serialport)_串口桌面插件-程序员宅基地

文章浏览阅读1.6w次,点赞3次,收藏22次。桌面串口工具 这是一个基于electron的串口工具桌面应用,因为我在网上走了很多坑,都不成功,终于找到对的方法,编译成功了,这里讲下我的编译成功的方法。希望能够帮到大家 完整demo在demo目录中,包括编译好的node_modules,所以有点大实现过程装备工作安装python 2.7 这里需要安装python 2.7的环境,记得是2.7,3_串口桌面插件

微信小程序开发——字符串转date对象转时间戳 ios显示NaN(踩坑记录)_微信小程序日期文本转时间对象-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏3次。问题描述:数据库中存的日期是字符串,yyyyMMdd格式取出后转为"yyyy-MM-dd 00:00:00:000"格式之后date = new Date(yyyy-MM-dd 00:00:00:000)之后转时间戳 date.getTime()。用这个时间戳计算得到一整周的日期数据,并显示在页面中。在微信开发者工具和安卓手机中日期均正常显示,但苹果手机显示NaN。解决办法..._微信小程序日期文本转时间对象

Android studio3.1 汉化_android+studio+3.1汉化-程序员宅基地

文章浏览阅读4.4k次。 下载资源:https://download.csdn.net/download/u014549283/10608422或者 百度云链接 密码 3y9k _android+studio+3.1汉化

Solidworks踩坑随笔_安装管理程序不能核实此服务器存在: 25734@localhost。确定您正确键入了名称。您-程序员宅基地

文章浏览阅读1.9w次,点赞3次,收藏22次。Solidworks无法打开问题终极解决办法网上流传的solidworks无法打开的解决办法有如下几种:使用solidworks安装包自带的修复工具修复缺点:耗费时间长,而且不一定能找到原来下载的安装包,况且不能根除此问题使用_SolidSQUAD_中的文件替换,之后运行server_remove.bat和server_install.bat脚本文件重新安装flexnet_server..._安装管理程序不能核实此服务器存在: 25734@localhost。确定您正确键入了名称。您

Beego学习笔记:ORM在MySQL生成表的过程_orm框架类转化为表-程序员宅基地

文章浏览阅读706次。个人github(包括golang学习笔记、源码):https://github.com/fangguizhen/Notes/blob/master/Golang%E7%9F%A5%E8%AF%86%E7%82%B9.md前期安装:MySQL驱动go get github.com/go-sql-driver/mysql介绍:Beego中内嵌了ORM框架,它可以将结构体和数据..._orm框架类转化为表

应运而生! 双11当天处理数据5PB—HiStore助力打造全球最大列存储数据库-程序员宅基地

文章浏览阅读134次。2019独角兽企业重金招聘Python工程师标准>>> ..._histore助力打造

随便推点

前端编程入门教程-程序员宅基地

文章浏览阅读1.2k次。今天分享下”前端编程入门教程“这篇文章,文中根据实例编码详细介绍,或许对大家的编程之路有着一定的参考空间与使用价值,需要的朋友接下来跟着云南仟龙Mark一起学习一下吧。HTML是英语Hyper Text Mark-up Language(超文本编译语言)的简称,它规范了HTML的语法标准,用于表明比“文本”更丰富的实际意义,例如图片,表格,连接等。电脑浏览器(IE,火狐浏览器等)手机软件了解HTML语言表达的语法,能够用于查询HTML文本文档。迄今为止互联网技术上的绝大部分网页页面全是应用HTML语言表达来_前端编程入门

java安装步骤及dos命令_dos命令行重装java指令-程序员宅基地

文章浏览阅读203次。一.常用的dos命令打开dos窗口的方式:window+r|开始->cmd1.切换盘符: 目标盘符: 大小写都可以2.切换路径: cd 路径 相对路径|绝对路径 如果不同盘符下的路径切换需要手动切换盘符3.回到上一层路径: cd.. 4.回到盘符跟路径: cd\5.罗列出当前路径下的所有子文件|子文件夹: dir6.自动补全: tab7.查找使用过的命令: 方向上下..._dos命令行重装java指令

Module build failed: TypeError: Cannot read properties of undefined (reading ‘toString‘)-程序员宅基地

文章浏览阅读3.7k次。Bilibili—狂神说Vue快速入门一、错误视频教程中,P16的代码,创建并写好Login.vue,输入npm run dev 运行报错。Module build failed: TypeError: Cannot read properties of undefined (reading ‘toString’)二、原因百度和谷歌了半天,没有找到解决方法。翻了翻bilibili评论区,看到有人提示到 lang=scss。删除 lang=“scss” 后,运行成功。三_module build failed: typeerror: cannot read property 'tostring' of undefined

GO学习之 协程(goroutine)_go 协程-程序员宅基地

文章浏览阅读920次。在 Go 语言中,goroutine 是一种非常轻量的执行单元,有 Go 运行是(runtime)进行调度,不是有固定大小的线程来处理的。与传统线程相比,goroutine的创建和切换开销很小,因此可以创建大量的 goroutine 来并行执行任务,而不会造成太大的系统负担。* goroutine 更像是一种高效的协程,它在并发编程中提供了轻量且较高的方式来处理并发,而不需要显式地创建和管理线程池。_go 协程

Linux下解决Redis安装时的编译报错问题_make[1]: *** [makefile:403: adlist.o] error 1-程序员宅基地

文章浏览阅读983次,点赞5次,收藏7次。1.报错:“cc”:未找到命令[root@server2 redis-5.0.3]# make解决办法如下: Linux环境安装gcc。[root@server1 redis-5.0.3]# yum install gcc -y2.报错:make[1]:***[adlist.o]错误1解决办法如下:[root@server1 redis-5.0.3]# make C..._make[1]: *** [makefile:403: adlist.o] error 1

基于MRTK的HoloLens开发(1)_mrtk项目报告-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏16次。基于MRTK的HoloLens开发(1)Hololens开发环境配置Visual Studio具体配置MRTK 工具包配置Unity配置如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流..._mrtk项目报告

推荐文章

热门文章

相关标签