[LeetCode javaScript] 108. 將有序陣列轉換為二叉搜尋樹
阿新 • • 發佈:2018-12-11
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。
本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 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; };