leetcode108. 将有序数组转换为二叉搜索树python

题目描述:

leetcode108. 将有序数组转换为二叉搜索树python_第1张图片 

leetcode108. 将有序数组转换为二叉搜索树python_第2张图片 

 题解:

从有序数列恢复BST的关键是:

有序数列nums的中间位置是根结点,其左边为左子树,右边为右子树。

1.确定nums的中间元素为root,rootidx = len(nums)//2

2.构造根节点root = TreeNode(nums[rootidx])

3.对rootidx左边和右边的序列分别递归调用函数。

class Solution(object):
    def sortedArrayToBST(self, nums):
        if len(nums)==0:
            return None
        rootidx = len(nums)//2
        root = TreeNode(nums[rootidx])
        root.left = self.sortedArrayToBST(nums[:rootidx])
        root.right = self.sortedArrayToBST(nums[rootidx+1:])
        return root

leetcode108. 将有序数组转换为二叉搜索树python_第3张图片

 

 

你可能感兴趣的:(leetcode树,python,算法,leetcode,二叉搜索树)