解题思路
形成一颗平衡二叉搜索树的关键在于保证左右两子树高度差不大于1,也就是根节点为对应树的中位数,这里提供一个取两值中间整数的写法(a+b) >>> 1,将和向右无符号移动1位即为两者中位整数,当然也可以用Math.floor((a+b)/2)的写法,也是可以的
代码
/**
* 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) {
const buildBST = (nums, start, end) => {
if(start > end) {
return null;
}
const midIndex = (start + end) >>> 1;
const root = new TreeNode(nums[midIndex]);
root.left = buildBST(nums, start, midIndex - 1);
root.right = buildBST(nums, midIndex + 1, end);
return root;
}
return buildBST(nums, 0, nums.length - 1);
};
小伙伴们今天的学习就到这里了,如果觉得本文对你有帮助的话,欢迎转发,评论,收藏,点赞!!!
每天学习进步一点点,就是领先的开始。如果想继续提高,欢迎关注我,或者关注公众号”祯民讲前端“。大量前端技术文章,面试资料,技巧等助你更进一步!