题目

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

0 条评论

发表评论

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注

站点统计

  • 文章总数:304 篇
  • 分类总数:19 个
  • 标签总数:189 个
  • 运行天数:852 天
  • 访问总数:460493 人次
ICP备案号: 辽ICP备20003309号