530. 二叉搜索樹的最小絕對差

給定一個所有節點爲非負值的二叉搜索樹,求樹中任意兩節點的差的絕對值的最小值。

示例 :

輸入:

   1
    \
     3
    /
   2

輸出:
1

解釋:
最小絕對差爲1,其中 2 和 1 的差的絕對值爲 1(或者 2 和 3)。
注意: 樹中至少有2個節點。
class Solution {
    int min = Integer.MAX_VALUE;
    TreeNode pre = null;
    public void dfs(TreeNode root){
        if(root != null){
            dfs(root.left);
            if(pre != null)
                min = Math.min(min,Math.abs(root.val - pre.val));
            pre = root;
            dfs(root.right);
        }

    }
    public int getMinimumDifference(TreeNode root) {
        dfs(root);
        return min;
    }
}
class Solution {
    List<Integer> list = new ArrayList();
    public void dfs(TreeNode root){
        if(root != null){
            dfs(root.left);
            list.add(root.val);
            dfs(root.right);
        }

    }
    public int getMinimumDifference(TreeNode root) {
        dfs(root);
        int min = Math.abs(list.get(1) - list.get(0));
        for(int i=0;i<list.size()-1;i++){
            int value = Math.abs(list.get(i+1) - list.get(i));
            if(min > value)
                min = value;
        }
        return min;
    }
}

注意:min的初值不能設爲0!求最小值,應該把它設置爲一個足夠大的值,或者是初值。

發佈了199 篇原創文章 · 獲贊 27 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章