LC530. 二叉搜索树的最小绝对差
解题思路
这题其实和LC98.验证二叉搜索树有异曲同工之妙,验证二叉搜索树是判断辅助数组的是否严格递增。
这题是让我们先中序遍历二叉树,然后将val保存进辅助数组nums进行排序,将每个元素与前后元素相减得到的绝对值就是最小绝对差。
代码
Python
1 | # Definition for a binary tree node. |
C++
1 | /** |
Go
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
var nums []int
func getMinimumDifference(root *TreeNode) int {
ans := math.MaxInt64
nums = []int{}
dfs(root)
sort.Ints(nums)
for i := 1; i < len(nums); i++ {
if i + 1 < len(nums){
ans = min(ans, abs(nums[i] - nums[i + 1]))
}
ans = min(ans, abs(nums[i] - nums[i - 1]))
}
return ans
}
func dfs(root *TreeNode) {
if root == nil{return}
dfs(root.Left)
nums = append(nums, root.Val)
dfs(root.Right)
}
func abs(a int) int{
if a < 0{return -a}
return a
}
func min(a int, b int) int{
if a > b {return b}
return a
}
评论
