English
530. Minimum Absolute Difference in BST
Problem Statement
Given the root
of a Binary Search Tree (BST), return the minimum absolute difference between the values of any two different nodes in the tree.
Example 1:
Input: root = [4,2,6,1,3]
Output: 1
Example 2:
Input: root = [1,0,48,null,null,12,49]
Output: 1
Constraints:
- The number of nodes in the tree is in the range
[2, 104]
. 0 <= Node.val <= 105
Note: This question is the same as 783: https://leetcode.com/problems/minimum-distance-between-bst-nodes/
Solution:
go
package main
import "math"
// Definition for a binary tree node.
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func getMinimumDifference(root *TreeNode) int {
var (
minDiff = math.MaxInt
prev = -1
)
var dfs func(*TreeNode)
dfs = func(node *TreeNode) {
if node == nil {
return
}
dfs(node.Left)
if prev != -1 {
minDiff = int(math.Min(float64(minDiff), float64(node.Val-prev)))
}
prev = node.Val
dfs(node.Right)
}
dfs(root)
return minDiff
}
...