QUESTION:
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.
EXPLANATION:
诶,其实就是最简单的算法。
1.遍历数据存入到集合中
2.排序
3.计算出两个之间最小的差就可以。
SOLUTION:
public class Solution {
private List<Integer> minDiffResult = new ArrayList<>();
public int getMinimumDifference(TreeNode root) {
getMinimumDifferenceHelper(root);
Collections.sort(minDiffResult);
int result = -1;
for(int i = 1;i<minDiffResult.size();i++){
if(result == -1)
result = Math.abs(minDiffResult.get(i-1)-minDiffResult.get(i));
result = Math.min(result,Math.abs(minDiffResult.get(i-1)-minDiffResult.get(i)));
}
return result;
}
public void getMinimumDifferenceHelper(TreeNode root){
if(root ==null) return;
getMinimumDifferenceHelper(root.left);
getMinimumDifferenceHelper(root.right);
minDiffResult.add(root.val);
}
}