天机阁

783. 二叉搜索树节点最小距离

2022-08-12 · 1 min read
LeetCode

题目

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

差值是一个正数,其数值等于两值之差的绝对值。

难度:🌟🌟

示例 1:

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

示例 2:

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

提示:

  • 树中节点的数目范围是 [2, 100]
  • 0 <= Node.val <= 105

题解

中序遍历会有序遍历 BST 的节点,遍历过程中计算最小差值即可。

代码实现

func minDiffInBST(root *TreeNode) int {
	if root == nil {
		return 0
	}
	minVal := math.MaxInt
	var preNode *TreeNode
	var inorder func(node *TreeNode)
	inorder = func(node *TreeNode) {
		if node == nil {
			return
		}
		inorder(node.Left)
		if preNode != nil {
			minVal = min(node.Val-preNode.Val, minVal)
		}
		preNode = node
		inorder(node.Right)
		return
	}
	inorder(root)
	return minVal
}

func min(x, y int) int {
	if x < y {
		return x
	}
	return y
}