Leetcode 108 Convert Sorted Array to Binary Search Tree

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

数组中间值置为root,然后对于两边的两块数组再调用该函数。

arrayObject.slice(start,end)
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。(第二个参数不写即返回第一个参数下标处到数组末端的所有元素)
使用arguments.callee对匿名函数进行递归调用
var sortedArrayToBST = function(nums) {
    if (nums.length === 0) return null
    var m = parseInt(nums.length/2)
    var root = new TreeNode(nums[m])
    root.left = arguments.callee(nums.slice(0,m))
    root.right = arguments.callee(nums.slice(m+1))
    return root
}
class Solution(object):
    def sortedArrayToBST(self, nums):
        if len(nums) == 0:
            return None
        else:
            node = TreeNode(nums[len(nums)/2])
            node.left, node.right = self.sortedArrayToBST(nums[:len(nums)/2]), self.sortedArrayToBST(nums[len(nums)/2+1:])
            return node
posted @ 2015-06-28 09:33  lilixu  阅读(145)  评论(0编辑  收藏  举报