python中如何验证二叉搜索树
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章给大家介绍python中如何验证二叉搜索树,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:
千家信息网最后更新 2025年01月24日python中如何验证二叉搜索树
这篇文章给大家介绍python中如何验证二叉搜索树,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
输入:
2
/ \
1 3
输出: true
示例 2:
输入:
5
/ \
1 4
/ \
3 6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
根节点的值为 5 ,但是其右子节点值为 4 。
解题思路:
1,中序遍历
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */var last=^(int(^uint(0) >> 1))func isValidBST(root *TreeNode) bool { if root!=nil{ if!isValidBST(root.Left){ return false } if last>=root.Val{ return false } last=root.Val if !isValidBST(root.Right){ return false } } return true}
方法二:
递归:根节点>大于左节点最大值,小于右节点最小值
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func isValidBST(root *TreeNode) bool {
if root==nil{
return true
}
if root.Left!=nil&& root.Right!=nil{
l:=maxBST(root.Left)
r:=minBST(root.Right)
return isValidBST(root.Left)&&isValidBST(root.Right)&&l
}
if root.Left!=nil{
l:=maxBST(root.Left)
return isValidBST(root.Left)&&l
}
if root.Right!=nil{
r:=minBST(root.Right)
return isValidBST(root.Right)&&root.Val
}
return true
}
func maxBST(root *TreeNode)int{
if root.Right!=nil{
return maxBST(root.Right)
}
return root.Val
}
func minBST(root *TreeNode)int{
if root.Left!=nil{
return minBST(root.Left)
}
return root.Val
}
关于python中如何验证二叉搜索树就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
节点
搜索
子树
输入
验证
内容
更多
示例
帮助
输出
不错
最大
最小
有效
兴趣
小伙
小伙伴
思路
文章
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
刀剑乱舞 手游 服务器
二本软件开发好就业吗
北邮网络技术 研究生
吴江区一站式网络技术优势
网络安全主题论文200
我的世界怎么读服务器存档
web与数据库比较用户名
应用软件开发需要资质么
PDO是实现的数据库抽象层
饥荒联机版最新的搭建服务器方法
无锡专业软件开发节能规范
计算机网络安全论文1000
客户机访问服务器的方法是
服务器防关联
数据库表和数据库日志的时间
网络安全安全宣传诗
即时通讯im 软件开发
丰都应用软件开发
新罗区亮广网络技术工作室
ncbi维护的核苷酸数据库
建立退役军人数据库方案
ceva 软件开发
软件开发笔记本最低配置
萌斗士公益服服务器
软件开发php和jA A区别
上海软件开发师待遇如何
联网单位网络安全检查表 铁岭
网络安全上机报告
网络安全类别b类
菜鸟驿站绑定监控提示服务器错误