二叉树算法题(17)二叉搜索树的最小绝对差

目录

二叉搜索树的最小绝对差

描述

示例

方法:递归


二叉搜索树的最小绝对差

描述

给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。

示例

输入:

   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);
    }
}

Guess you like

Origin blog.csdn.net/weixin_39478524/article/details/121049595