前言
废话不多说,能学到东西!功不唐捐!
内容
一、二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点 root
,返回 树中任意两不同节点值之间的最小差值 。
中序遍历
func getMinimumDifference(root *TreeNode) int {
res:=dfs(root)
var val []int
for i:=0;i<len(res)-1;i++{
val=append(val,res[i+1]-res[i])
}
return findMin(val)
}
func findMin(nums []int)int{
min:=nums[0]
for _,v:=range nums{
if v<min{
min=v
}
}
return min
}
// func findMin(nums []int)int{
// min:=nums[0]
// for i:=0;i<len(nums)-1;i++{
// if nums[i+1]<min{//第一遍写这个竟然写错了没发现
// min=nums[i+1]
// }
// }
// return min
// }
func dfs(root *TreeNode)(res []int){
if root==nil{
return
}
res=append(res,dfs(root.Left)...)
res=append(res,root.Val)
res=append(res,dfs(root.Right)...)
return
}
在中序遍历的过程中用 pre变量保存前驱节点的值,这样即能边遍历边更新答案,不再需要显式创建数组来保存。
func getMinimumDifference(root *TreeNode)int{
var prev *TreeNode// 保留前一个节点的指针
min:=math.MaxInt64
//var min math.MaxInt64 math.MaxInt64 是一个常量,表示 64 位有符号整数的最小值。你不能直接使用 var min math.MaxInt64 这样的代码来定义一个变量并将其赋值为 math.MaxInt64
var dfs func(root *TreeNode)
dfs=func (root *TreeNode){
if root==nil{
return
}
dfs(root.Left)
if prev!=nil&&root.Val-prev.Val<min{
min=root.Val-prev.Val
}
prev=root
dfs(root.Right)
}
dfs(root)
return min
}
最后
原文地址:https://blog.csdn.net/m0_62786673/article/details/134771293
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_37468.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。