题目地址
https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/
题目描述
代码初步
拿到这个题的时候,心里没有任何想法。后来看评论才知道,这题的解题核心是:取数组中间的元素作为根结点,将数组分为两部分,分别对两部分用递归的方法构建左右子树。
代码欣赏
本题采用了分治,递归算法。分治的思想是将一个问题划分成不同的小问题。以便各个击破,分而治之。这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。
# 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
"""
if len(nums)==0:
return None
# 取nums列表的中间下标值
mid = len(nums)//2
pNode = TreeNode(nums[mid])
pNode.left = self.sortedArrayToBST(nums[:mid])
pNode.right = self.sortedArrayToBST(nums[mid+1:])
return pNode