lintcode练习-177.把排序数组转换为高度最小的二叉搜索树

描述

给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。

There may exist multiple valid solutions, return any of them.

您在真实的面试中是否遇到过这个题?  

样例

给出数组 [1,2,3,4,5,6,7], 返回

     4
   /   \
  2     6
 / \    / \
1   3  5   7

挑战

可能有多个答案,返回任意一个即可


"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right = None, None
"""

class Solution:
    """
    @param: A: an integer array
    @return: A tree node
    """
    def sortedArrayToBST(self, A):
        # write your code here
        return self.convert(A)
   
    def convert(self, A):
        if not A:
            return None
        if len(A) == 1:  # 当只有一个元素的时候,单独处理
            return TreeNode(A[0])
        mid = (len(A)-1)//2  # 注意整除
        root = TreeNode(A[mid])
        root.left = self.convert(A[:mid])
        root.right = self.convert(A[mid+1:])
        return root

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/80960101