题目:
思路:
由性质:BST中序遍历是升序排列
依次比较前一个节点和root的差值即可
使用成员变量pre记录前一个节点,定义为TreeNode类型,当pre不为null才计算插值,比定义为int更不容易出错
中序遍历,无需返回值
每一轮递归的结果存于成员遍历 r ,主函数返回 r
class Solution {
TreeNode pre=null; // 若pre为int类型,则容易将初始值带入计算
int r=Integer.MAX_VALUE;
public int getMinimumDifference(TreeNode root) {
check(root);
return r;
}
void check(TreeNode root){
if(root==null || r==-1){ // r=-1则不再遍历
return;
}
check(root.left);
if(pre!=null){
r=Math.min(r,Math.abs(root.val-pre.val));
}
pre=root;
check(root.right);
}
}