【Python刷题】将有序数组转换为二叉搜索树

问题描述

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵
平衡 二叉搜索树。

高度平衡的意思是:二叉树是一颗满足“每个结点的左右两个子树的高度差的绝对值不超过1”的二叉树。

示例 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] 都是高度平衡二叉搜索树。

解决办法

因为是平衡二叉树,所以总是要选取中间节点,比如在示例一中[-10,-3,0,5,9],先选取中间节点0,然后再分别同时选取两边数字的左侧[-10,5]或者右侧[-3,9]节点 。

  • 中序遍历,总是选择中间位置左边的数字作为根节点
  • 中间位置左边的数字作为根节点,则根节点的下标为mid=(left+right)//2
    具体实现步骤:
  • 对数组的下标进行遍历,首先排除特殊情况,定义左右边界下标,如果左边的索引大于右边的索引,则返回None
  • 第二个特殊情况,如果左右数的索引相等,那么说明只有一个根结点,则建立一个只有根结点的树
  • 排除掉这两中情况后,选取中间节点,即mid=[l+r]//2,将其设置为根结点
  • 再分别采用递归的方法设置左子树和右子树

代码示例

class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
        def arrayToBst(l,r):
            if l > r:
                return None
            if l == r:
                return TreeNode(nums[l],None,None)  #建立一棵树,左、右子树都为空
            else:
                mid = ( l + r ) // 2
                root=TreeNode(nums[mid])
                root.left = arrayToBst(l,mid-1)
                root.right = arrayToBst(mid+1,r)
                return root
        return arrayToBst(0,len(nums)-1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/508645.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

012——LED模块驱动开发(基于I.MX6uLL)

目录 一、 硬件原理图 二、 驱动程序 三、 应用程序 四、 Makefile 五、操作 一、 硬件原理图 又是非常经典的点灯环节 ,每次学新语言第一步都是hello world,拿到新板子或者学习新的操作系统,第一步就是点灯。 LED 的驱动方式&#xff0…

3.26号arm

1. SPI相关理论 1.1 概述 spi是一种同步全双工串行总线,全称串行外围设备接口 通常SPI通过4个引脚与外部器件相连: MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。 MOSI:主设备输…

ZKFair 创新之旅,新阶段如何塑造财富前景

在当前区块链技术的发展中,Layer 2(L2)解决方案已成为提高区块链扩容性、降低交易成本和提升交易速度的关键技术,但它仍面临一些关键问题和挑战,例如用户体验的改进、跨链互操作性、安全性以及去中心化程度。在这些背景…

如何让光猫4个网口都有网络

一般情况光猫只有LAN1口有网络,LAN2、LAN3和LAN4口都是预留给电视用的,那么如何让这3个网口也有网络呢? 使用场景: 光猫在弱电箱内,弱电箱中有三根网线(网线1、网线2和网线3)分别接入到了三个房…

Day60:WEB攻防-XMLXXE安全无回显方案OOB盲注DTD外部实体黑白盒挖掘

目录 XML&XXE-传输-原理&探针&利用&玩法 XXE 黑盒发现 XXE 白盒发现 XXE修复防御方案 有回显 无回显 XML&XXE-黑盒-JSON&黑盒测试&类型修改 XML&XXE-白盒-CMS&PHPSHE&无回显 知识点: 1、XXE&XML-原理-用途&…

【滑动窗口】Leetcode 串联所有单词的子串

题目解析 30. 串联所有单词的子串 本题的意思就是在目标串s中寻找能够找到的words字符串的全排列,返回起始位置 算法讲解 我们可以将这道题转化为寻找目标串的words字母的异位词,按照上一次讲解的【滑动窗口】Leetcode 找到字符串中所有字母异位词我们…

ssm015基于java的健身房管理系统的设计与实现+vue

健身房管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本健身房管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间…

【目标检测】YOLOv6 的网络结构,图解RepBlock重参数化

YOLOv6 是美团推出的,在这个版本里面,不再使用之前 YOLOv4 和 YOLOv5 的带 CSP 结构的 CSPDarknet-53 作为 backbone 了,而是在 RepVGG 的启发下,推出了新的 EfficientRep 作为 YOLOv6 的 backbone。 RepVGG 最重要的一点是&…

【操作系统】FCFS、SJF、HRRN、RR、EDF、LLF调度算法及python实现代码

文章目录 一、先来先服务调度算法(FCFS) 二、短作业优先调度算法(SJF) 三、高响应比优先调度算法(HRRN) 四、轮转调度算法(RR) 五、最早截至时间优先算法(EDF&#…

单V及多V感知在自动驾驶在恶劣环境条件下的感知提升方案

单V及多V感知在自动驾驶在恶劣环境条件下的感知提升方案 附赠自动驾驶学习资料和量产经验:链接 自动驾驶中的视觉感知是车辆在不同交通条件下安全、可持续地行驶的关键部分。然而,在大雨和雾霾等恶劣天气下,视觉感知性能受到多种降级效应的极…

EasyCVR视频汇聚平台海康Ehome2.0与5.0设备接入时的配置区别

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

excel中文本列显示e+17这样的科学计数法如何处理

我的excel中文本列显示e17这样的科学计数法 然后右键,设置单元格格式,为特殊,邮政编码,点确定即可 最后效果如下

JavaScript_与html结合方式

JavaScript_语法 ECMAScript&#xff1a;客户端脚本语言的标准 1.基本语法 1.1 与html结合方式&#xff08;2种&#xff09; 1. 内部JS 定义<script>,标签体内容就是js代码 2. 外部JS 定义<script>,通过src属性引入外部的 js文件 注意&#xff1a; 1.<script>…

Html提高——视频标签音频标签及其相关属性

HTML5 在不使用插件的情况下&#xff0c;也可以原生的支持音视频格式文件的播放&#xff0c;当然&#xff0c;支持的格式是有限的。 1、video标签 1.1、video标签的语法 <video src"文件地址" controls"controls"></video> video标签的内部…

maven-下载慢问题

1、使用统一的maven组件&#xff0c;将maven安装到系统中&#xff0c;maven安装请自行百度 2、idea中配置如图 3、编辑settings.xml&#xff0c;直接将下面代码粘贴进去即可&#xff0c;原理是换到阿里服务器 <?xml version"1.0" encoding"UTF-8"?&…

C++取经之路(其三)——内联函数,auto关键字

目录 内联函数&#xff1a; 内联函数注意点&#xff1a; auto&#xff1a; atto注意点&#xff1a; 内联函数&#xff1a; 概念&#xff1a; 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调 用建立栈帧的开销…

【单片机 5.3开关检测】

文章目录 前言一、5.3开关检测1.1没按键按下的1.2有按键按下的 二、改进1.改进 三、独立键盘3.1为什么要取反3.2 实用的按键 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 课程需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xf…

【C语言】【Leetcode】409. 最长回文串

文章目录 题目思路代码呈现 题目 链接: link 思路 关于这道题&#xff0c;比起一般的回文数题&#xff0c;这题的区别的在给定的字符中任意排序直至形成一个最长的回文数&#xff0c;而且题目中跟我们提到&#xff0c;这里的字符串中只会出现字母&#xff0c;我们只需区分大…

EPO平台:赋能离散型制造,实现智慧化管理

在离散型制造行业&#xff0c;如电梯、汽车配件、轴承制造、家电制造等领域&#xff0c;随着市场竞争的加剧和企业规模的不断扩大&#xff0c;传统的管理方式已经逐渐无法满足企业的需求。数据采集复杂、库存积压、工艺配置混乱、订单交付困难等问题成为制约企业发展的瓶颈。为…

前端-css-03

1.盒子模型 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…