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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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