/**
* 530. 二叉搜索树的最小绝对差
* @author wsq
* @date 2020/10/12
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
示例:
输入:
1
\
3
/
2
输出:
1
解释:
最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
链接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst
*/
package com.wsq.tree;
public class GetMinimumDifference {
private int minN = Integer.MAX_VALUE;
/**
* 获取最小绝对差
* 采用递归的方式
* 1.求根节点与左子树最右节点的差值
* 2.求根节点与右子树最左节点的差值
* 3.采用全局最小值变量,维护目前检索到的差值最小值
* @param root
* @return
*/
public int getMinimumDifference(TreeNode root) {
dfs(root);
return minN;
}
private void dfs(TreeNode root){
if(root == null){
return;
}
// 排查左子树
TreeNode left = root.left;
if(left != null){
while(left.right != null){
left = left.right;
}
minN = minN > Math.abs(root.val - left.val) ? Math.abs(root.val - left.val) : minN;
}
TreeNode right = root.right;
if(right != null){
while(right.left != null){
right = right.left;
}
minN = minN > Math.abs(root.val - right.val) ? Math.abs(root.val - right.val) : minN;
}
dfs(root.left);
dfs(root.right);
}
}
530. 二叉搜索树的最小绝对差
最新推荐文章于 2025-10-08 16:40:58 发布
本文介绍了一种计算二叉搜索树中任意两节点差的绝对值的最小值的方法。通过递归遍历,寻找每个节点与左子树最右节点及右子树最左节点之间的差值,并维护一个全局最小值。
647

被折叠的 条评论
为什么被折叠?



