[LeetCode] 108. Convert Sorted Array to Binary Search Tree

将有序数组转化为二叉搜索树。题目即是题意。只要输出一个有效的BST即可。此题可以跟109题一起做,要求很接近但是做法不太一样。例子,

Example:

Given the sorted linked list: [-10,-3,0,5,9],

One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:

      0
     / \
   -3   9
   /   /
 -10  5

这个题可以用递归做。因为是BST的关系,而且input是有序数组,所以找到数组的mid元素,即是找到了BST的根节点。代码如下

时间O(n)

空间O(n)

 1 /**
 2  * @param {number[]} nums
 3  * @return {TreeNode}
 4  */
 5 var sortedArrayToBST = function (nums) {
 6     if (!nums) return null;
 7     return helper(nums, 0, nums.length - 1);
 8 }
 9 
10 var helper = function (nums, low, high) {
11     if (low > high) return null;
12     var mid = Math.floor((high + low) / 2);
13     var node = new TreeNode(nums[mid]);
14     node.left = helper(nums, low, mid - 1);
15     node.right = helper(nums, mid + 1, high);
16     return node;
17 }

猜你喜欢

转载自www.cnblogs.com/aaronliu1991/p/12293678.html
今日推荐