将有序数组转换为平衡二叉搜索树(递归解法)

解题思路
形成一颗平衡二叉搜索树的关键在于保证左右两子树高度差不大于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);
};

       小伙伴们今天的学习就到这里了,如果觉得本文对你有帮助的话,欢迎转发,评论,收藏,点赞!!!
       每天学习进步一点点,就是领先的开始。如果想继续提高,欢迎关注我,或者关注公众号”祯民讲前端“。大量前端技术文章,面试资料,技巧等助你更进一步!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值