61 lines
1.6 KiB
JavaScript
61 lines
1.6 KiB
JavaScript
/*
|
||
* @lc app=leetcode id=108 lang=javascript
|
||
*
|
||
* [108] Convert Sorted Array to Binary Search Tree
|
||
*
|
||
* https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/description/
|
||
*
|
||
* algorithms
|
||
* Easy (49.37%)
|
||
* Total Accepted: 255.2K
|
||
* Total Submissions: 507.2K
|
||
* Testcase Example: '[-10,-3,0,5,9]'
|
||
*
|
||
* Given an array where elements are sorted in ascending order, convert it to a
|
||
* height balanced BST.
|
||
*
|
||
* For this problem, a height-balanced binary tree is defined as a binary tree
|
||
* in which the depth of the two subtrees of every node never differ by more
|
||
* than 1.
|
||
*
|
||
* Example:
|
||
*
|
||
*
|
||
* Given the sorted array: [-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
|
||
*
|
||
*
|
||
*/
|
||
/**
|
||
* 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;
|
||
const mid = nums.length >> 1;
|
||
const root = new TreeNode(nums[mid]);
|
||
|
||
root.left = sortedArrayToBST(nums.slice(0, mid));
|
||
root.right = sortedArrayToBST(nums.slice(mid + 1))
|
||
return root;
|
||
// 扩展: 这道题启示我们如果是一个非排序的数组,我们可以先进行排序然后再按上述思路进行。
|
||
};
|
||
|