思路:
由性质: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);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89291.html