关于二叉搜索树的最小绝对差

102 阅读1分钟

1.二叉搜索树特点

 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 
 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 
 它的左、右子树也分别为二叉排序树
 二叉搜索树的中序遍历是递增有序的

2.计算二叉搜索树的最小绝对差

/**
 * 考虑对升序数组求任意两个元素之差的绝对值的最小值,答案一定为相邻两个元素之差的最小值
 */
public class Solution {

     int ans;

     int pre;

    public int getMinimumDifference(TreeNode root) {
        ans = Integer.MAX_VALUE;
        pre = -1;
        dfs(root);
        return ans;

    }

    public void dfs(TreeNode root){
        if(root == null){
            return;
        }
        dfs(root.left);
        if(pre == -1){
            pre = root.val;
        }else {
            ans = Math.min(ans,root.val - pre);
            pre = root.val;
        }
        dfs(root.right);
    }
}