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
相关推荐
子豪-中国机器人2 分钟前
第 11 届蓝桥杯 C++ 青少组中 / 高级组省赛 2020 年真题,选择题详细解释
数据结构·算法
信奥洪老师23 分钟前
2025-03 机器人等级考试三级理论真题 3级
算法·青少年编程·机器人·arduino
古月฿43 分钟前
流水线问题(算法设计)C++
开发语言·c++·算法
m0_631354451 小时前
2024武汉邀请赛B.Countless Me
算法
Evand J1 小时前
课题推荐——通信信号处理中的非线性系统状态估计(如信号跟踪、相位恢复等场景),使用无迹卡尔曼滤波(UKF)的非线性滤波算法,MATLAB实现
算法·matlab·信号处理
yy鹈鹕灌顶1 小时前
贪心算法精解(Java实现):从理论到实战
java·算法·贪心算法
结冰架构2 小时前
【AI提示词】决策树专家
人工智能·算法·决策树·ai·提示词
啊阿狸不会拉杆2 小时前
人工智能数学基础(五):概率论
人工智能·python·数学·算法·概率论
阳洞洞3 小时前
leetcode 977. Squares of a Sorted Array
算法·leetcode·双指针
羑悻的小杀马特4 小时前
从工厂到生活:算法 × 深度学习,正在改写自动化的底层逻辑
深度学习·算法·自动化·生活