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

智能推荐

大象机器人开源六轴协作机械臂myCobot 320 手机摄影技术!

这些问题标志着我后续研究的重点方向,需要我继续深入学习AVFoundation框架的使用,特别是其控制摄像头的具体方法,并探索如何将这些控制整合到机械臂的运动调整中,以确保最终拍摄出的视频质量符合预期。尽管目前市场上有许多稳定设备如平衡环架(gimbal)来辅助拍摄,以求达到稳定和多角度的拍摄效果,但在此篇文章中,我将探索一种独特的解决方案:通过将手机安装在机械臂的末端来进行拍摄,以实现那些传统方法难以捕捉的特殊视角。随着人工智能技术的不断进步和普及,AI与机器人的结合无疑将成为未来技术发展的重要趋势。

【计算机毕业设计】springboot党员之家服务系统小程序-程序员宅基地

文章浏览阅读342次,点赞6次,收藏8次。党员之家服务系统小程序的功能已基本实现,主要包括首页、个人中心、学生管理、教师管理、任务信息管理、报名信息管理、任务排名管理、学习资料管理、每日打卡管理、交流信息管理、回复信息管理、积极分子管理、党员信息管理、交流论坛、系统管理等。论文主要从系统的分析与设计 、数据库设计和系统的详细设计等几个方面来进行论述,系统分析与设计部分主要论述了系统的功能分析、系统的设计思路,数据库设计主要论述了数据库的设计,系统的详细设计部分主要论述了几个主要模块的详细设计过程。

Failed to discover available identity versions when contacting http://controller:35357/v3. 错误解决方式_caused by newconnectionerror('<urllib3.connection.-程序员宅基地

文章浏览阅读8.3k次,点赞5次,收藏12次。作为 admin 用户,请求认证令牌,输入如下命令openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue报错Failed to discover available identity versions whe._caused by newconnectionerror('

学校机房统一批量安装软件的方法来了_教室电脑 一起装软件-程序员宅基地

文章浏览阅读4.5k次。​可以在桌面安装云顷还原系统软件,利用软件中的网络对拷功能部署批量对拷环境,进行电脑教室软件的批量对拷安装与增量对拷安装。​_教室电脑 一起装软件

消息队列(kafka/nsq等)与任务队列(celery/ytask等)到底有什么不同?_任务队列和消息队列-程序员宅基地

文章浏览阅读3.1k次,点赞5次,收藏7次。原文链接:https://www.ikaze.cn/article/43写这篇博文的起因是,我在论坛宣传我开源的新项目YTask(go语言异步任务队列)时,有小伙伴在下面回了一句“为什么不用nsq?”。这使我想起,我在和同事介绍celery时同事说了一句“这不就是kafka吗?”。那么YTask和nsq,celery和kafka?他们之间到底有什么不同呢?下面我结合自己的理解。简单的分析一..._任务队列和消息队列

Java调KT类_java 调用kt 对象-程序员宅基地

文章浏览阅读1.5k次。1,MyUtuils.kt将被调用的文件class MyUtils { fun show(info:String){ println(info) }}fun show(info:String){ println(info)}2,Java文件调用该类,ClientJava.javapublic class ClientJava { public static void main(String[] args) { /** _java 调用kt 对象

随便推点

rsync+inotify实现NFS实时同步数据以及压力测试_centos6.5 rsync ino-程序员宅基地

文章浏览阅读1.2k次。1第一步:搭建NFS服务器关于NFS服务器的搭建请参考http://blog.csdn.net/qq_30256711/article/details/78463940第二步:rsync同步实现关于rsync同步请参考http://blog.csdn.net/qq_30256711/article/details/78539342第三步:inotify结合rsync实现实时同步_centos6.5 rsync ino

第11章 软件工程

2.可重复级:建立了基本的项目管理过程和实践来跟踪项目费用,进度,功能特性。5.优化级:加强了定量分析,通过过程质量反馈,新观念,新技术的反馈。1.初始级:软件过程杂乱无章,没有明确定义的步骤,英雄式核心人物。定量管理(CL4):已定量管理的过程的制度化。已管理(CL2):已管理的过程的制度化。已定义(CL3):已定义的过程的制度化。3.已定义级:过程文档化,标准化。4.已管理级:软件过程和产品质量。定量管理的:已度量和控制。优化的:集中于过程改进。已管理的:为项目服务。已定义的:为组织服务。

论文阅读--Search to Distill

标准的知识蒸馏(KD)方法将笨重的教师模型的知识蒸馏到具有预定义架构的学生模型的参数中。然而,神经网络的知识,即网络在给定输入条件下的输出分布,不仅取决于其参数,还取决于其架构。因此,对于KD的一种更广义的方法是将教师的知识蒸馏到学生的参数和架构中。为了实现这一点,我们提出了一种新的基于架构的知识蒸馏(AKD)方法,该方法找到最适合蒸馏给定教师模型的学生模型(对于教师来说是珍珠)。具体来说,我们利用带有我们的KD引导奖励的神经架构搜索(NAS)来搜索最适合给定教师模型的学生架构。

Docker知识点汇总表格总结

Docker知识比较全面的总结,使用表格总结结合示例,一目了然,运维参考以及面试参考皆可

Matplotlib.pyplot库引入失败?_如何导入 matplotlib.pyplot 导入失败-程序员宅基地

文章浏览阅读174次。用Python的人总少不了与Matplotlib接触,可是我们在引入时Python少不了报错。此时,我们就需要在错误中寻找线索。_如何导入 matplotlib.pyplot 导入失败

uni-app,uni-table表格操作_uniapp table-程序员宅基地

文章浏览阅读8.5k次,点赞2次,收藏11次。使用uni-ui UI框架实现表格加分页功能,uni-table 和uni-pagination 组件的使用示例加完整代码。_uniapp table

推荐文章

热门文章

相关标签