leetcode 108. 将有序数组转换为二叉搜索树

'''
leetcode  108. 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
'''
# Definition for a binary tree node.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution:
    def sortedArrayToBST(self, nums) -> TreeNode:
        '''
        以有序数组的中间元素作为整棵树的根节点,并将原始的有序序列划分成左右两个序列
        再分别以左边序列构建根节点的左子树,右边序列构建根节点的右子树
        递归构建
        :param nums:
        :return:
        '''
        if len(nums)==0:
            return None
        if len(nums)==1:
            return TreeNode(nums[0])
        mid_index=int(len(nums)//2)
        root=TreeNode(nums[mid_index])

        root.left=self.sortedArrayToBST(nums[:mid_index])
        root.right=self.sortedArrayToBST(nums[(mid_index+1):])

        return root

if __name__=="__main__":
    output=Solution().sortedArrayToBST([-10,-3,0,5,9])
    print(output.val)
    print(output.left.val)
    print(output.right.val)

    print(output.left.left.val)
    print(output.right.left.val)

 

你可能感兴趣的:(python,leetcode)