给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
示例:
输入:
1
\
3
/
2
输出:
1
解释:
最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
提示:
树中至少有 2 个节点。
本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
______________________________________________________________________________________________
对于bst,牢牢把握左小右大,中序遍历即可。
本题也采用中序遍历的方法:
func getMinimumDifference(root *TreeNode) int {
res := 0
if root == nil {
return res
}
nums := make([]int,0)
l := 0
res = 999999
inorder(root,&nums,&l,&res)
return res
}
func inorder (root *TreeNode, nums *[]int,l,min *int) {
if root == nil {
return
}
inorder(root.Left,nums,l,min)
if *l > 0 {
//中序遍历,后减前,不需要abs
if (root.Val - (*nums)[*l-1]) < *min {
*min = root.Val - (*nums)[*l-1]
}
}
*nums = append(*nums,root.Val)
*l++
inorder(root.Right,nums,l,min)
}