530. 二叉搜索树的最小绝对差

给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。

差值是一个正数,其数值等于两值之差的绝对值。

题解:使用中序遍历来实现

代码如下:

 public int getMinimumDifference(TreeNode root) {
        int pre = -1;
        int res = Integer.MAX_VALUE;
        Stack s = new Stack<>();
        while(root != null || !s.isEmpty()){
            while(root != null){
                s.push(root);
                root = root.left;
            }
            TreeNode node = s.pop();
            if(pre == -1){
                pre = node.val;
            }
            else{
                res = Math.min(res, Math.abs(node.val - pre));
                pre = node.val;
                
            }
            root = node.right;
        }
        return res;

    }

注意:对于根节点,根据二叉搜索数的性质,根节点和左子树中的右子树的差值是更小的,正好中序遍历满足该条件差值=4-3,而不是4-2

                                     4

                                 2       7 

                              1     3 

你可能感兴趣的:(算法,leetcode)