码迷,mamicode.com
首页 > 其他好文 > 详细

Convert Sorted Array to Binary Search Tree

时间:2017-06-07 12:49:37      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:方法   sorted   大于   ems   var   cti   problem   code   logs   

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

标签:方法   sorted   大于   ems   var   cti   problem   code   logs   

原文地址:http://www.cnblogs.com/agentgamer/p/6955931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!