问题108:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。

这题因为要求高度平衡,所以我们要把数组中间的那个数作为根,这样其左子树和右子树的节点数量相差不超过1。然后,把其左边的元素的中间数作为其左子树的根,把其右边的元素的中间数作为其右子树的根,这样递归下去。
完整代码:
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
def createBST(left, right):
if left > right:
return
mid = (left + right) // 2
root = TreeNode(nums[mid])
root.left = createBST(left, mid - 1)
root.right = createBST(mid + 1, right)
return root
return createBST(0, len(nums)-1)
运行结果:
