golang中怎么利用leetcode实现一个合法二叉搜索树
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章将为大家详细讲解有关golang中怎么利用leetcode实现一个合法二叉搜索树,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现一个函数,检
千家信息网最后更新 2025年02月05日golang中怎么利用leetcode实现一个合法二叉搜索树
这篇文章将为大家详细讲解有关golang中怎么利用leetcode实现一个合法二叉搜索树,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
实现一个函数,检查一棵二叉树是否为二叉搜索树。
示例 1:
输入:
2
/ \
1 3
输出: true
示例 2:
输入:
5
/ \
1 4
/ \
3 6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
根节点的值为 5 ,但是其右子节点值为 4 。
解题思路
1,如果没有叶子节点返回true
2,如果左子树非空,需要返回前缀节点路径上的最大值,且比根节点小
3,如果右子树非空,需要返回后缀节点路径上的最小值,且比根节点大
4,左右子树都是合法的
5,需要注意,不是前缀节点是前缀节点路径最大值
测试用例
[5,1,4,null,null,3,6]
[5,14,null,1]
代码实现
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func isValidBST(root *TreeNode) bool {
if root==nil || (root.Left==nil && root.Right==nil) {
return true
}
valid:=true
if root.Left!=nil{
l:=pre(root.Left)
if l>=root.Val{
valid=false
}
fmt.Println(l,root)
}
if root.Right!=nil{
r:=suc(root.Right)
if r<=root.Val{
valid=false
}
fmt.Println(r,root)
}
return valid && isValidBST(root.Left) && isValidBST(root.Right)
}
func pre(root * TreeNode) int{
//root !=nil
max:=root.Val
cur:=root
for cur!=nil{
if cur.Right!=nil{
cur=cur.Right
if max
max=cur.Val
}
}else{
cur=cur.Left
if cur!=nil && max
max=cur.Val
}
}
}
return max
}
func suc(root*TreeNode)int{
min:=root.Val
cur:=root
for cur!=nil{
if cur.Left!=nil{
cur=cur.Left
if min >cur.Val{
min=cur.Val
}
}else{
cur=cur.Right
if cur!=nil && min >cur.Val{
min=cur.Val
}
}
}
return min
}
关于golang中怎么利用leetcode实现一个合法二叉搜索树就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
节点
合法
搜索
前缀
路径
子树
输入
最大
内容
文章
更多
最大值
知识
示例
篇文章
输出
不错
最小
代码
函数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
残疾人自学软件开发
天津迅捷网络技术
网络运维和网络安全好找工作吗
医院网络安全管理职责
DLP3D软件开发
新能源三电应用层软件开发
服务器的三个管理模式
锐捷网络安全吗
杭州真义互联网科技有限公司
软件开发相关内容论文
国家网络安全基地建设规划
应用软件开发的基本原则
微博软件开发工程师
大学生课设区块链系统软件开发
数字安全网络安全股
小型公司如何组建存储服务器
服务器http通道异常
上海京东软件开发工作怎么样
游戏环境最好的部落服务器
江西网络时钟服务器云主机
金山区会计软件开发五星服务
直播服务器是干什么用的
房间服务器设置方法
鸿蒙 软件开发 用什么语言
浅谈网络安全策略
硬件维护对网络安全的重要性
海南数据库消防技术服务哪家便宜
网络安全防护喷雾身体
网络安全法明确实名
国有企业加强网络安全的通知