首页 > 其他 > 详细

LeetCode Convert Sorted Array to Binary Search Tree

时间:2016-02-19 17:15:48      阅读:98      评论:0      收藏:0      [点我收藏+]

LeetCode解题之Convert Sorted Array to Binary Search Tree


原题

给定一个升序的序列,将它转化为高度平衡的二叉搜索树。

注意点:

  • 同一个序列转化成的二叉搜索树可能有多种

例子:

输入: nums = [1,2,3]

输出:

  2
 / 1   3

解题思路

平衡二叉搜索树的要求是每个节点左右子树的高度差最多为1。那只要取序列的中间数作为根节点,左边的序列再组成它的左子树,右边的序列组成它的右子树,递归完成构造。

AC源码

# Definition for a binary tree node.
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


class Solution(object):
    def sortedArrayToBST(self, nums):
        """
        :type nums: List[int]
        :rtype: TreeNode
        """
        return self._sortedArrayToBST(nums, 0, len(nums))

    def _sortedArrayToBST(self, nums, left, right):
        if left == right:
            return None
        mid = (left + right) >> 1
        root = TreeNode(nums[mid])
        root.left = self._sortedArrayToBST(nums, left, mid)
        root.right = self._sortedArrayToBST(nums, mid + 1, right)
        return root


if __name__ == "__main__":
    None

欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。

LeetCode Convert Sorted Array to Binary Search Tree

原文:http://blog.csdn.net/u013291394/article/details/50697682

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!