leedcode 将有序数组转换为二叉搜索树

递归:

复制代码
class Solution:
    def process(self,left,right,nums):
        if left>right:
            return None
        mid=left+(right-left)//2
        midnode=TreeNode(nums[mid])
        midnode.left=self.process(left,mid-1,nums)
        midnode.right=self.process(mid+1,right,nums)
        return midnode

    def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
        return self.process(0,len(nums)-1,nums)
复制代码

 迭代:

复制代码
class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
        if len(nums) == 0:
            return None
        root = TreeNode(0)
        rootque = [root]
        leftque = [0]
        rightque = [len(nums) - 1]
        while rootque:
            cur = rootque.pop(0)
            left = leftque.pop(0)
            right = rightque.pop(0)
            mid = left + (right - left) // 2
            cur.val = nums[mid]
            if left < mid:
                cur.left = TreeNode(0)
                rootque.append(cur.left)
                leftque.append(left)
                rightque.append(mid - 1)
            if right > mid:
                cur.right = TreeNode(0)
                rootque.append(cur.right)
                leftque.append(mid + 1)
                rightque.append(right)

        return root
复制代码

 

posted @   Junior_bond  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示