将升序数组转化为平衡二叉搜索树

描述 给定一个升序排序的数组,将其转化为平衡二叉搜索树(BST).

平衡二叉搜索树指树上每个节点 node 都满足左子树中所有节点的的值都小于 node 的值,右子树中所有节点的值都大于 node 的值,并且左右子树的节点数量之差不大于1

数据范围:0≤n≤10000,数组中每个值满足 ∣val∣≤5000 进阶:空间复杂度 O(n) ,时间复杂度 O(n)

思路:题目很简单,因为这个数组是升序的,既然是升序的,那么就可以直接精准的找到中间节点设为根节点,然后用递归构建左子树和右子树即可。

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param num int整型一维数组 
# @return TreeNode类
#
class Solution:
    def sortedArrayToBST(self , num: List[int]) -> TreeNode:
        # write code here
        if num == None:
            return None
        n =len(num)
        if  n == 0:
            return None
        k = n//2
        T = TreeNode(num[k])
        if n == 1:
            return T
        T.left = self.sortedArrayToBST(num[:k])
        T.right = self.sortedArrayToBST(num[k+1:])
        return T