Skip to content

将有序数组转换为二叉搜索树

问题

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。

答案

js
var sortedArrayToBST = function(nums) {
    let dfs=(left,right,nums)=>{
        if(left>right) return null;
        let mid=Math.floor((left+right)/2);
        let root=new treeNode(nums[mid]);
        root.left=dfs(left,mid-1,nums);
        root.right=dfs(mid+1,right,nums);
        return root;
    }
    return dfs(0,nums.length-1,nums);
}

扩展

平衡二叉树:该树的任意结点的左右子树高度差不超过1

二叉搜索树(BST):左小右大,严格

红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它在普通二叉搜索树的基础上增加了“颜色”属性,并通过严格的颜色和旋转规则保证树的高度始终是 O(log n),从而使查找、插入、删除等操作的最坏时间复杂度都能保持在 O(log n)。

alt text