题目
代码与解析
最不推荐的方法
遍历二叉树,把值添加进数组,然后求最小差值
func getMinimumDifference(root *TreeNode) int {
if root==nil{
return 0
}
var traversal func(root *TreeNode)
res := []int{}
traversal = func (root *TreeNode){
if root==nil{
return
}
res = append(res, root.Val)
traversal(root.Left)
traversal(root.Right)
}
traversal(root)
if len(res)<2{
return res[0]
}
min := 100000
for i:=0;i<len(res)-1;i++{
for j:=i+1;j<len(res);j++{
t := int(math.Abs(float64(res[i])-float64(res[j])))
if t<min{
min = t
}
}
}
return min
}
递归
二叉搜索树如果采用中序遍历的话,就是一个有序数组
func getMinimumDifference(root *TreeNode) int {
var pre *TreeNode
var traversal func (root *TreeNode)
res := 100000
traversal = func (root *TreeNode){
if root == nil{
return
}
traversal(root.Left)
if pre !=nil{
res = minn(res, pre.Val-root.Val)
}
pre = root
// traversal(root.Left)
traversal(root.Right)
}
traversal(root)
return res
}
func minn(res, res2 int)int{
res = int(math.Abs(float64(res)))
res2 = int(math.Abs(float64(res2)))
if res<res2{
res2 = res
}
return res2
}