【代码随想录day19】从前序与中序遍历序列构造二叉树

news2024/10/6 8:31:37

题目 

 思路

使用递归建树,流程如下:

  1. 取出后序节点创建新树的节点

  2. 找到新树的节点在中序中的索引

  3. 分割中序序列

  4. 分割后序序列

  5. 继续递归建立整颗新树

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
        # 如果所有节点都已经扫过,说明新的树已经建成了,应返回空节点
        if not inorder:
            return None
        # 1.取出前序节点创建新树的节点
        root = TreeNode(preorder[0])
        
        # 2.找到新树的节点在中序中的索引
        in_index = inorder.index(root.val)
        
        # 3.分割中序序列
        in_left = inorder[:in_index]
        in_right = inorder[in_index+1:]

        # 4.分割前序序列
        pre_left = preorder[1:len(in_left)+1]
        pre_right = preorder[len(in_left)+1:]

        # 5.继续递归建立整颗新树
        root.left = self.buildTree(pre_left, in_left)
        root.right = self.buildTree(pre_right, in_right)
        return root

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring-cloud-alibaba——nacos-server搭建

前言:组件版本关系,官方:组件版本关系 1,nacos-server搭建(windows环境),下载地址nacos 选择对应的版本,这里以目前最新版2.2.3为例子,下载后解压 单机模式 修改\nacos-server-2.2.3\nacos\bin\startup.c…

【ribbon】Ribbon的使用与原理

负载均衡介绍 负载均衡(Load Balance),其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同…

【全方位解析】如何获取客户端/服务端真实 IP

一、应用场景 1.比如在投票系统开发中,为了防止刷票,我们需要限制每个 IP 地址只能投票一次 2.当网站受到诸如 DDoS(Distributed Denial of Service,分布式拒绝服务攻击)等攻击时,我们需要快速定位攻击者…

星火汇聚丨高效行动,决胜2023!

7月6日至10日,数字韧性领域标杆企业同创永益营销体系大会在长沙召开,闪耀在全国各地的销售之星集结汇聚。本次大会历时四天,包含营销全员大会、各行业业委会专场会议、销售大比武等业务实践议程,以及飞盘竞技、走进毛泽东故居韶山…

【收藏】用Vue.js来构建你的Web3应用,就像开发 Web2 一样熟悉

作为一名涉足去中心化网络的前端 JavaScript 开发人员,您可能遇到过许多 Web3 开发解决方案。但是,这些解决方案通常侧重于钱包集成和交易执行,这就造成了学习曲线,偏离了熟悉的 Web2 开发体验。 但不用担心!有一种解…

ip、域名、DNS、CDN概念

1、概念 ip地址 在网络世界里, 一台服务器或者说一台网络设备对应着一个ip地址, 如果我们需要访问指定的网络设备的资源, 那么我们就需要知道这个ip地址, 然后才能去访问它. 这就好像, 我想去朋友家里, 我必须先知道他家的住址, 才能去拜访它. 在互联网世界中, 所有的通信都是…

Docker数据管理与Dockerfile

目录 Docker 的数据管理 1.数据卷 2.数据卷容器 端口映射 容器互联(使用centos镜像) Docker 镜像的创建 1.基于现有镜像创建 2.基于本地模板创建 3.基于Dockerfile 创建 联合文件系统…

亚马逊会员日过后站内站外怎么做?

在亚马逊的会员日活动中,众多品牌商家都参与了进来,通过优惠力度和活动策划提高了销售额。但是,会员日过后,如何保持销售增长和用户粘性,需要品牌商家在站内和站外进行策略优化。 一、站内优化 1、提高产品质量的同时…

【Nodejs】Express模板使用

1.Express脚手架的安装 安装Express脚手架有两种方式: 使用express-generator安装 使用命令行进入项目目录,依次执行: cnpm i -g express-generator可通过express -h查看命令行的指令含义 express -hUsage: express [options] [dir] Optio…

28.JavaWeb-Elasticsearch

1.Elasticsearch概述 Elasticsearch 是一个分布式的全文检索引擎。采用Java语言开发,基于Apache协议的开源项目,具有实时搜索,稳定,可靠,快速的特点。 1.1 全文检索引擎 分为通用搜索引擎(百度、谷歌&…

苹果发布安全更新,修复了今年第11个零日漏洞!

苹果公司发布了安全更新,修复针对 iPhone、Mac 和 iPad 的零日漏洞。 苹果公司在一份公告中描述了一个 WebKit 漏洞,该漏洞被标记为 CVE-2023-37450,已在本月初的新一轮快速安全响应 (RSR) 更新中得到解决。 本次修补的另一个零日漏洞是一个…

CAD中让时间日期自动填写的方法

图纸的图签中,通常会有一栏是出图日期。有的单位,也会叫做版本号。即哪天出的图。一般情况下,出图日期就是打图当天。 在这样的前期下,图纸由于存在频繁修改,所以出图日期也会存在变化。还有一种情况,就是出…

(四)FLUX语法

以下内容来自 尚硅谷,写这一系列的文章,主要是为了方便后续自己的查看,不用带着个PDF找来找去的,太麻烦! 第 4 章 FLUX语法 4.1 认识FLUX语言 1、Flux是一种函数式的数据脚本语言,它旨在将查询、处理、分…

Docker 网络和资源限制

Docker 网络 一、Docker 网络的概念1、Docker 网络实现原理2、查看容器的输出和日志信息3、Docker 的网络模式:4、容器的网络模式 二、网络模式详解1、host模式2、container模式3、none模式4、bridge模式5、自定义网络 三、资源控制1、CPU 资源控制(1&am…

MQ - 闲聊MQ一二事儿 (Kafka、RocketMQ 、Pulsar )

文章目录 MQ的发展史阶段一:追求解耦阶段二:追求吞吐量与一致性阶段三:追求平台化 MQ的通用架构主题topic、生产者producer、消费者consumer分区partition MQ 存储KafkaGood Design ---> 磁盘顺序写盘Poor Impact---> topic 数量不能过…

Java Spring和Spring集成Mybatis

0目录 1.Spring 2.Spring集成Mybatis 1.Spring 特性 IOC:控制反转 AOP:面向切面 Spring组成部分 在SMM中起到的作用(粘合剂) Spring理念 OOP核心思想【万物皆对象】 Spring核心思想【万物皆Bean组件】 Spring优势 低侵入式 …

解决Jmeter响应内容显示乱码

一、问题描述 jmeter在执行接口请求后,返回的响应体里面出现乱码现象,尽管在调了对应请求的响应编码也无用,现找到解决办法。 二、解决办法 进入到jmeter的bin目录下,找到jmeter.properties,通过按ctrlF快速定位查找到…

手机图片转pdf?两种方法介绍

手机图片转pdf?如今,随着生活的数字化,我们的手机中储存了大量的照片。但是,如果需要将这些照片转换成PDF格式,该怎么办呢?下面,小编就给大家介绍三种方法来实现这一目标。 第一种方法&#xff…

SpringBoot 统一功能处理:用户登录权限校验-拦截器、异常处理、数据格式返回

本篇将要学习 Spring Boot 统一功能处理模块,这也是 AOP 的实战环节 用户登录权限的校验实现接口 HandlerInterceptor WebMvcConfigurer异常处理使用注解 RestControllerAdvice ExceptionHandler数据格式返回使用注解 ControllerAdvice 并且实现接口 ResponseBody…

基于STM32CubeMX和keil采用STM32F407的基本定时器中断实现LED闪烁

文章目录 前言1. 电路原理图理解2. 基本定时器2.1 STM32定时器中断的流程:2.2 部分参数详解2.2.1 时钟源2.2.2 预分频系数2.2.3 自动重装载值 3. STM32CubeMX参数配置3.1GPIO配置3.2 时钟配置3.2 配置定时器相关参数3.3 Debug配置3.4 中断配置3.5 代码生成 4. keil代…