530. Minimum Absolute Difference in BST

Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.

Solution 1://先遍历左节点然后把左节点设为prev ,然后算差值,把自己设为prev然后遍历右节点,保证root永远大于prev

class Solution {
    int min = Integer.MAX_VALUE;
    Integer prev = null;
    public int getMinimumDifference(TreeNode root) {
        if (root == null)
            return min;
        getMinimumDifference(root.left);
        if (prev != null)
            min = Math.min(min, root.val - prev);
        prev = root.val;
        getMinimumDifference(root.right);
        return min;
    }
}
 
Solution 2://用先序遍历的方法
class Solution {
    int min = Integer.MAX_VALUE;
    TreeSet<Integer> set = new TreeSet<>();
    public int getMinimumDifference(TreeNode root) {
        if (root == null)
           return min;
        if (!set.isEmpty()) {
            if (set.floor(root.val) != null) //set.floor(val)找到set中等于val或小于val的最大的数
                min = Math.min(min, root.val - set.floor(root.val));
            if (set.ceiling(root.val) != null) //set.ceiling(val)找到set中等于val或大于val的最小的数
                min = Math.min(min, set.ceiling(root.val) - root.val); 
        }
        set.add(root.val);
        getMinimumDifference(root.left);
        getMinimumDifference(root.right);
        return min;
    }
}
posted @   MarkLeeBYR  阅读(142)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示