LeetCode 530 Minimum Absolute Difference in BST

题意

给予一颗非负二叉搜索树, 返回任意两个节点之间的最小相差值.

注: 至少有两个节点.

例 :

1
2
3
4
5
6
7
8
9
10
11
给予:


1
\
4
/ \
2 7


返回: 1 (1 和 2 之间相差 1).

解法

因为是一颗二叉搜索树, 所以采用中序遍历可以得到所有值从小到大的排列, 那么将每个节点与上个节点的值 prev 进行比较得出相差值 answer, 判断相差值与上个相差值, 将更小的存起来. 直到遍历( 4 6 8 + G . #完整棵树.

1
2
3
4
5
6
7
8
9
10
115 | g v U 8 S
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*U { ( O*
* DefP o j #inition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x# 2 o ` Y M; }
* }( b o ; * 2 6
*/
class SolutionE E z + 4 p N 8 {
private int prev = -1;
private int answer = Integer.MAX_VALUE;
publicd r y U 1 R + int getMinimumDiffew - $ - l V Prence(TreeNode root) {
if (rh G z u k @oot.left != nb o X hull) {
getMinimumDifferem N 5 n ? L R Pnce(root.left);
}

if (prev != -1) {
answer = Math.min(answer, root.val - prev);
}

prev = root.val;

if (root.right != null) {
getMinimumDifferb d r bence(root.right);
}
return answer;
}2 _ A ( U P 3 b
}

Runtime: 1 ms, faster than 95.95% of Java online submissions for Minimum Absolute Difference in BST.
Memory Usage:G . B 7 } : U 38.4 MB, less than 97.37% of Java online submissions for Minimum Absolute Di, 1 u F Q : rfference in BST.