力扣二叉树--第三十七天

前言

废话不多说,能学到东西!功不唐捐!

内容

一、二叉搜索树的最小绝对差

530. 二叉搜索树的最小绝对差

给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值

差值是一个正数,其数值等于两值之差的绝对值。

中序遍历

中序遍历将值保存在一个数组中再进行遍历求解

Go 复制代码
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变量保存前驱节点的值,这样即能边遍历边更新答案,不再需要显式创建数组来保存。

Go 复制代码
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
}

最后

学习使人快乐!掌控感让人舒适!学无止境!

相关推荐
pen-ai1 分钟前
【优化方法】最小二乘:从误差平方到线性与非线性拟合
人工智能·算法·机器学习
名字还没想好☜15 分钟前
Go 用 json.Decoder 流式解析大 JSON:边读边处理不爆内存
开发语言·后端·golang·go·json
Q26433650231 小时前
【有源码】基于机器学习的电信网络诈骗话术语义识别与可视化分析系统 XGBoost算法+Hadoop+Spark
大数据·hadoop·算法·机器学习·spark·毕业设计·课程设计
不会就选b1 小时前
算法日常・每日刷题--贪心<11>
算法·leetcode·职场和发展
千里码aicood1 小时前
面向电商冷启动与数据稀疏性的协同过滤算法优化研究
大数据·算法·协同过滤
xxxiugou1231 小时前
双指针解题秘籍:从入门到精通
c语言·数据结构·c++·算法
能源革命1 小时前
TimesFM(Time Series Foundation Model)介绍
算法·能源
猎嘤一号1 小时前
学术训练(一)文献检索与阅读
人工智能·算法·机器学习·科研入门
Doubbbbbbble云1 小时前
多路归并算法在外部排序中的实现与优化
算法
沉淀的.晴天2 小时前
FreeRTOS信号量
数据结构·算法