leetcode 783. Minimum Distance Between BST Nodes(BST节点的最小距离)

在这里插入图片描述
找出二叉搜索树(BST)中任意两个节点值的差的最小值。

思路:

知道为什么是easy么,因为它是BST,而不是一般的二叉树甚至是多叉树。

BST有个特点,它的中序遍历一定是升序的。
中序遍历一遍,问题就转换成了升序数组中,两个元素差的最小值。

既然是升序,那么相差最小的肯定是相邻的俩元素。
于是变成相邻两元素差的最小值。

现在不用数组储存,直接在中序遍历过程中求前后两diff值,更新最小的diff.

class Solution {
    int pre = -1;
    int minDis = 1000000;
    public int minDiffInBST(TreeNode root) {
        inOrder(root);
        return minDis;
    }

    void inOrder(TreeNode root) {
        if(root == null) return;

        inOrder(root.left);
        if(pre >= 0) minDis = Math.min(minDis, root.val-pre);
        pre = root.val;
        inOrder(root.right);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值