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

题目描述:

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵

平衡二叉搜索树。

示例 1:

输入:nums = -10,-3,0,5,9

输出:0,-3,9,-10,null,5

解释:0,-10,5,null,-3,null,9 也将被视为正确答案:

示例 2:

输入:nums = 1,3

输出:3,1

解释:1,null,3 和 3,1 都是高度平衡二叉搜索树。

思路:

二叉搜索树满足两个条件:1)根比左子树大比右子树小;2)高度平衡。因此直接获取有序数组中值作为根就可以,递归生成左子树和右子树即可

python:

python 复制代码
class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
        if len(nums)==0:
            return
        elif len(nums)==1:
            return TreeNode(nums[0])

        mid=len(nums)//2
        node=TreeNode(nums[mid])
        node.left=self.sortedArrayToBST(nums[:mid])
        node.right=self.sortedArrayToBST(nums[mid+1:])
        return node
相关推荐
纪念 2298 分钟前
C++算法(三)
开发语言·c++·算法
学不会pwn不改名23 分钟前
时间复杂度与空间复杂度详解
算法
AbandonForce33 分钟前
递归、搜索与回溯:从板书到二叉树解题方法
c++·算法·决策树
打工仔折腾 AI1 小时前
让时序预测真正参与决策:TimechoAI 工程化落地与管线设计实践
人工智能·后端·python·算法·机器学习·性能优化
Light601 小时前
企业自建 AI 智能体,成本差 8 倍还是 46 倍?
java·人工智能·算法·知识图谱·rag·ai agent 上下文·token 成本
曹牧1 小时前
VS: Visual Studio 里把未包含的文件加进项目2
linux·运维·算法
重生之小比特1 小时前
【算法拾光】滑动窗口|长度最小的子数组 + 无重复字符的最长子串
算法
weixin_307779131 小时前
C++代码实现MATLAB中的fitnlm函数功能
开发语言·c++·算法·matlab
雪落漂泊1 小时前
C++算法:双指针篇(下)
数据结构·c++·算法