LeetCode108:将有序数组转换为BST

问题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)

运行结果:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。