530.二叉搜索树的最小绝对差
可以做,就是中序遍历,把数从小到大排序,再循环找最小值。
再或者一个个遍历每个结点,把他跟父结点和爷结点比大小,更新最小值,因为要么左边要么右边跟中间节点比大小,不会让左边跟右边比大小。
class Solution {
int num=0;
int[] a=new int[10000];
int ans=100000;
public int getMinimumDifference(TreeNode root) {
if(root==null){
return 0;
}
dfs(root);
// for(int i=0;i<num;i++){
// System.out.println(a[i]);
// }
// System.out.println(num);
for(int i=0;i<num-1;i++){
ans=Math.min(a[i+1]-a[i],ans);
}
return ans;
}
void dfs(TreeNode root){
if(root==null) return;
dfs(root.left);
a[num++]=root.val;
// System.out.println(num);
dfs(root.right);
}
}