leetcode 530 二叉搜索树的最小绝对差

## 思路

原题链接

  1. 需要注意在定义result的时候, result 的值为 Integer.MAX_VALUE,不要误写为Math.MAX_VALUE
  2. 使用中序遍历可以按照从小到大的顺序来操作
  3. 关于递归的使用:在写了截止条件后,写关于细节处的处理,可以具体到最小的位置,看看如何写
  4. traversal函数是void类型的,在写return的时候,不要写为return null,这样是错的,要直接写成 return; 即可
  5. 二刷:对中间位置处理,此处的逻辑:先对左节点进行处理,统计了其任意两节点之差,然后开始对中间节点进行处理。根据递归的思想,pre 代表着上一层的节点数据,即当前root的left节点,因为是儿茶搜索树,所以,一定是root的值大于pre的值
class Solution {
    //首先定义pre节点用于保存前一个节点,定义result保存结果
    TreeNode pre;
    int result = Integer.MAX_VALUE;
    public int getMinimumDifference(TreeNode root) {
        if(root == null) return 0;
        traversal(root);
        return result;
    }
    //递归函数的作用是,检查相邻两位置的节点值之差
    //使用中序遍历,可以实现将二叉树搜索树按从小到大的顺序排列
    public void traversal(TreeNode root){
        //写截止条件
        if(root == null) return;
        //进行中序遍历,首先操作左节点
        traversal(root.left);
        //对中间节点进行操作
        if(pre != null){
            result = Math.min(result, root.val - pre.val);
        }
        pre = root;
        //对右节点进行操作
        traversal(root.right);
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值