Convert Sorted Array to Binary Search Tree

Posted Agentgamer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Convert Sorted Array to Binary Search Tree相关的知识,希望对你有一定的参考价值。

https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/#/description

把升序数组转成一个height平衡二叉树。这个平衡两个字一开始吓到我了,后面发现用最直觉的方法转换的话,高度是保证平衡的,也就是说左树和右树的高度差不会大于1。

方法就是,找到数组的中位数,然后以此把数组剖两半,分别做左右子树。这样递归的下去直到数组为空。

可以保证高度平衡是因为,把一个数组剖两半有两种情况:1. 数组是奇数,这样左右树高度会完全一致。2. 数组是偶数,那么左右树的节点数量只会相差1,这样高度也只会相差1.故平衡。

//Definition for a binary tree node.
function TreeNode(val) {
    this.val = val;
    this.left = this.right = null;
}

var sortedArrayToBST = function(nums) {
    return ct(nums, 0, nums.length-1);
};

function ct(arr, left, right) {
    if (left > right) return null;
    var mid = parseInt((left + right) / 2);
    var root = new TreeNode(arr[mid]);
    root.left = ct(arr, left, mid - 1);
    root.right = ct(arr, mid + 1, right);
    return root;
}

 

以上是关于Convert Sorted Array to Binary Search Tree的主要内容,如果未能解决你的问题,请参考以下文章

108. Convert Sorted Array to Binary Search Tree

Convert Sorted Array to Binary Search Tree

leetcode 108 Convert Sorted Array to Binary Search Tree

108. Convert Sorted Array to Binary Search Tree

108. Convert Sorted Array to Binary Search [Python]

LC.108.Convert Sorted Array to Binary Search Tree