1. 程式人生 > >[LeetCode javaScript] 108. 將有序陣列轉換為二叉搜尋樹

[LeetCode javaScript] 108. 將有序陣列轉換為二叉搜尋樹

將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。

本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。

示例:

給定有序陣列: [-10,-3,0,5,9],

一個可能的答案是:[0,-3,9,-10,null,5],它可以表示下面這個高度平衡二叉搜尋樹:

  0
 / \

-3 9 / / -10 5

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
 //借鑑的大神的思路,因為是拍好需的,所有從中間擷取就能保證二叉排序樹
/**
 * @param {number[]} nums
 * @return {TreeNode}
 */
var sortedArrayToBST = function(nums) {
    if(nums.length==0){
        return null;
    }
    //遍歷到葉子節點時,直接加入到樹上
    if(nums.length==1){
        return new TreeNode(nums[0]);
    }
    var mid=parseInt(nums.length/2);
    //將當前的中點儲存到樹上
    var root=new TreeNode(nums[mid]);
    //繼續向下遞迴
    root.left=sortedArrayToBST(nums.slice(0,mid));
    root.right=sortedArrayToBST(nums.slice(mid+1,));
    return root;
};