LeetCode Convert Sorted Array to Binary Search Tree

Posted gavinfish

tags:

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

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的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Convert Sorted List to Binary Search Tree

LeetCode Convert Sorted Array to Binary Search Tree

leetcode 109 Convert Sorted List to Binary Search Tree

leetcode 108 Convert Sorted Array to Binary Search Tree

LeetCode 108. Convert Sorted Array to Binary Search Tree

Leetcode 108. Convert Sorted Array to Binary Search Tree