千家信息网

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通道异常 上海京东软件开发工作怎么样 游戏环境最好的部落服务器 江西网络时钟服务器云主机 金山区会计软件开发五星服务 直播服务器是干什么用的 房间服务器设置方法 鸿蒙 软件开发 用什么语言 浅谈网络安全策略 硬件维护对网络安全的重要性 海南数据库消防技术服务哪家便宜 网络安全防护喷雾身体 网络安全法明确实名 国有企业加强网络安全的通知
0