问题LeetCode给定一个有序的整数数组,元素不同且按升序排列,编写一个算法来创建一棵高度最小的二叉搜索树。示例:给定一个有序数组:[-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],可以表示如下高度的平衡二进制搜索树:0/\-39//-105个思路递归二叉搜索树的根节点必须是有序数组的中位数:如果长度为奇数,则只取中位数;如果长度为偶数,则唯一的中位数取右中位数。递归终止条件:有序数组为空代码Python3#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解:defsortedArrayToBST(self,nums:List[int])->TreeNode:如果不是nums:returnNonemid=len(nums)//2root=TreeNode(nums[mid])root.left=self.sortedArrayToBST(nums[:mid])root.right=self.sortedArrayToBST(nums[mid+1:])返回根链接GitHub
