题目

leetcode:530

代码与解析

最不推荐的方法


遍历二叉树,把值添加进数组,然后求最小差值

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
}
分类: 算法

站点统计

  • 文章总数:309 篇
  • 分类总数:19 个
  • 标签总数:190 个
  • 运行天数:975 天
  • 访问总数:72817 人次

浙公网安备33011302000604

辽ICP备20003309号