描述
给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。
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
"""
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