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).
哇这道Difficulty为easy的题耗了我四个小时真的是气!!!我也太菜了吧!!!好了讲讲思路:二分搜索树的一大特点就是中序遍历后会得到一个递增的数组,想到这里题目已经解答了一半,剩下的工作就是把数组逐两比较用一个常量来记录最小值,到最后返回最小值即可。AC码如下:(我宝贵的AC码)
public class Solution {
public int getMinimumDifference(TreeNode root) {
ArrayList<Integer> rs = new ArrayList<Integer>();
Integer minnum = Integer.MAX_VALUE;
if(root==null){
return minnum;
}
mid(rs,root);
int size = rs.size();
int[] list = new int[size];
for(int i=0;i<size;i++){
list[i] = rs.get(i);
}
for(int j=0;j<list.length-1;j++){
if(Math.abs(list[j]-list[j+1])<minnum){
minnum=Math.abs(list[j]-list[j+1]);
}
}
return minnum;
}
public void mid(ArrayList<Integer> rs,TreeNode root){
if(root==null)return;
if(root.left!=null){
mid(rs,root.left);
}
rs.add(root.val);
if(root.right!=null){
mid(rs,root.right);
}
}
}