yankewei / LeetCode

LeetCode 问题的解决方法
MIT License
6 stars 0 forks source link

二叉搜索树节点最小距离 #132

Open yankewei opened 3 years ago

yankewei commented 3 years ago

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

注意:本题与 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同

示例 1:

示例1

输入:root = [4,2,6,1,3]
输出:1

示例 2:

示例2

输入:root = [1,0,48,null,null,12,49]
输出:1

提示:

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

yankewei commented 3 years ago

dfs

因为是一个二叉搜索树,可以直接中序遍历获取排序后的结果

func minDiffInBST(root *TreeNode) int {
    var slice []int
    var dfs func(root *TreeNode)
    dfs = func (root *TreeNode) {
    if root == nil {
        return
    }
    dfs(root.Left)
    slice = append(slice, root.Val)
    dfs(root.Right)
    }
    dfs(root)
    ret := math.MaxInt64
    for i := 0; i < len(slice)-1; i++ {
    if slice[i+1] - slice[i] < ret {
        ret = slice[i+1] - slice[i]
    }
    }
    return ret
}