108. 將有序數組轉換爲二叉搜索樹(樹)(BST)(回看)

在這裏插入圖片描述

關鍵點,對一個有序數組,要想構造一棵 平衡BST,必須從中間的結點開始;
選取中間點可以隨意選,構造的平衡BST不唯一

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        if(nums.length == 0) return null;
        return buildBlancedBST(nums,0,nums.length-1);
    }

    public TreeNode buildBlancedBST(int[] nums,int l,int r){
        if(l>r) return null;

        int mid = (l+r)/2;

        TreeNode root = new TreeNode(nums[mid]);

        root.left = buildBlancedBST(nums,l,mid-1);
        root.right = buildBlancedBST(nums,mid+1,r);

        return root; 
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章