530. Minimum Absolute Difference in BST
Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.
Example:
Input: 1 \ 3 / 2 Output: 1 Explanation: The minimum absolute difference is 1, which is the difference between 2 and 1 (or between 2 and 3).
Note: There are at least two nodes in this BST.
题意:找出二叉搜索树中,结点差值最小的差值。
解法:因为要找出结点差值最小的值,本来是要遍历N*N才能找到的,但是因为是二叉搜索树,中序遍历的结构就是有序的,最小差值肯定是相邻结点的差值中的一个,所以只要O(n)就可以了。
public class Solution {
int min = Integer.MAX_VALUE;
Integer prev = null;
public int getMinimumDifference(TreeNode root) {
if (root == null) return min;
getMinimumDifference(root.left);
if (prev != null) {
min = Math.min(min, root.val - prev);
}
prev = root.val;
getMinimumDifference(root.right);
return min;
}
}