108. 将有序数组转换为二叉搜索树
已解答
简单
相关标签
相关企业
给你一个整数数组 nums
,其中元素已经按 升序 排列,请你将其转换为一棵
平衡
二叉搜索树。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def sortedArrayToBST(self, nums):
"""
:type nums: List[int]
:rtype: Optional[TreeNode]
"""
if nums==[]:
return None
l = len(nums)
# if l==1:
# return TreeNode(nums[0])
mid = l/2
mid_node = TreeNode(nums[mid])
# print(nums[:mid])
# print(nums[mid:])
mid_node.left = self.sortedArrayToBST(nums[:mid])
mid_node.right = self.sortedArrayToBST(nums[mid+1:])
return mid_node
迭代进行,每次拿出中间那个,这样左右子树最多相差就是1个节点,不会有问题