题目描述
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
示例 1:
输入:root = [4,2,6,1,3]
输出:1
示例 2:
输入:root = [1,0,48,null,null,12,49]
输出:1
解题思路
二叉树的中序遍历,因为搜索树的中序遍历是一个递增的有序数组,所以只需要判断当前值-前一个值的结果与最小值进行比较最终得出最小值。
解题代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
var res int
var pre int
func minDiffInBST(root *TreeNode) int {
res = math.MaxInt64
pre = 0
midIter(root)
return res
}
func midIter(root *TreeNode){
if root==nil{
return
}
midIter(root.Left)
if pre !=0{
res = min(res,root.Val-pre)
}
pre = root.Val
midIter(root.Right)
}
func min(a,b int) int{
if a>b {
return b
}
return a
}