目录
二叉搜索树的最小绝对差
描述
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
示例
输入:
1 \ 3 / 2
输出:
1
解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
提示:树中至少有 2 个节点。
方法:递归
因为本题要计算两节点的差的绝对值最小值,我们中序遍历就可以得到一个升序的数组,然后依次遍历即可算出最小的差。
class Solution {
public int min = Integer.MAX_VALUE;
public int pre = -1;
public int getMinimumDifference(TreeNode root) {
InOrder(root);
return min;
}
public void InOrder(TreeNode root) {
if (root == null) return;
InOrder(root.left);
if (pre==-1){
pre=root.val;//如果是头节点,更新前缀为当前节点继续遍历
}else{
min=Math.min(min,root.val-pre);//计算当前节点与前缀的差,更新最小值
pre=root.val;//更新前缀
}
InOrder(root.right);
}
}