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

LeetCode Convert Sorted Array to Binary Search Tree

时间:2016-02-19 17:18:05      阅读:159      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!