剑指 Offer 07. 重建二叉树

news2024/11/29 8:45:35

剑指 Offer 07. 重建二叉树

一、题目

输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。

假设输入的前序遍历和中序遍历的结果中都不含重复的数字。

在这里插入图片描述

Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
Output: [3,9,20,null,null,15,7]

示例 2:

Input: preorder = [-1], inorder = [-1]
Output: [-1]

限制:

0 <= 节点个数 <= 5000

二、题解

树一般都有递归和循环两种方式

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    //树一般都有递归和循环两种方式
    int preindex = 0;//定义遍历到哪里了
    int inindex = 0;

    public TreeNode buildTree(int[] preorder, int[] inorder) {
        return rec(preorder, inorder, null);
    }

    private TreeNode rec(int[] preorder, int[] inorder, TreeNode node) {
        if (preindex == preorder.length || (node != null && inorder[inindex] == node.val)) {
            return null;
        }
        //先建立跟节点
        TreeNode root = new TreeNode(preorder[preindex++]);

        //左子树
        root.left = rec(preorder, inorder, root);
        inindex++;

        //右子树
        root.right = rec(preorder, inorder, node);
        return root;
    }
}

剑指 Offer 03. 数组中重复的数字
剑指 Offer 04. 二维数组中的查找
剑指 Offer 05. 替换空格
剑指 Offer 06. 从尾到头打印链表
剑指 Offer 07. 重建二叉树
剑指 Offer 09. 用两个栈实现队列
剑指 Offer 10- I. 斐波那契数列
剑指 Offer 10- II. 青蛙跳台阶问题
剑指 Offer 11. 旋转数组的最小数字
剑指 Offer 12. 矩阵中的路径
剑指 Offer 15. 二进制中1的个数



声明:
        题目版权为原作者所有。文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。


By luoyepiaoxue2014

B站: https://space.bilibili.com/1523287361 点击打开链接
微博: http://weibo.com/luoyepiaoxue2014 点击打开链接

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

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

相关文章

ansible第三天作业

1.挂载本地光盘到/mnt 2.配置yum源仓库文件通过多种方式实现 仓库1 &#xff1a; Name: RH294_Base Description&#xff1a; RH294 base software Base urt: file:///mnt/BaseOS 不需要验证钦件包 GPG 签名 启用此软件仓库 仓库 2: Name: RH294_Stream Description …

QGIS编译---QGIS3.22.4 + Qt5.15.3 + VS2019 ---64位版本

0 编译结果 先放上编译结果&#xff1a; 图1 QGIS3.22 启动界面 图2 QGIS3.22 操作界面 1 前言 因一些主观、客观原因&#xff0c;一年多没更新博客了&#xff0c;提笔继续。 这是笔者编译的第三个版本QGIS&#xff0c;本次编译原因有四&#xff1a; &#xff08;1&#xff…

05-微服务调用组件FeignDubbo实战

JAVA 项目中如何实现接口调用 1&#xff09;Httpclient HttpClient 是 Apache Jakarta Common 下的子项目&#xff0c;用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 JDK 自带的UR…

Neo4j图数据库实现节点批量删除

1 前言 1-1 简介 由于对图数据库需要经常维护&#xff0c;图数据库建设初期&#xff0c;需要经常对数据写入删除等操作。 1-2 任务背景 再将1100万数据写入Neo4j后&#xff0c;由于需要对每个实体的label做精细化处理&#xff0c;之前写入的时候每个实体的label全部都为‘Comm…

Webhook端口使用介绍与演示

在API接口调用的集成项目中&#xff0c;用户调用知行之桥的API接口以给EDI系统推送数据时&#xff0c;经常会有这样的疑问&#xff1a;怎样查看是否调用接口成功&#xff1f;怎样查看数据是否推送成功&#xff1f;推送之后用户端会有怎样的响应提示&#xff1f; 为满足以上问题…

个人资料、消息、书签和偏好设置 干货 | 环境问题还是测试的老大难?两个步骤轻松搞定

在实际的工作中&#xff0c;绝大部分公司都至少有3个以上的环境&#xff0c;供测试与研发人员使用。测试人员不可能为每个环境都准备一个自动化测试的脚本&#xff0c;这样的维护成本太过庞大。所以就需要做到一套脚本&#xff0c;可以在各个环境上面运行。首先在上一节提到过的…

并发编程——7.共享模型之工具

目录7.共享模型之工具7.1.线程池7.1.1.自定义线程池7.1.2.ThreadPoolExecutor7.1.2.1.线程池状态7.1.2.2.构造方法7.1.2.3.newFixedThreadPool7.1.2.4.newCachedThreadPool7.1.2.5.newSingleThreadExecutor7.1.2.6.提交任务7.1.2.7.关闭线程池7.1.2.9.异步模式之工作线程7.1.2.…

python之字符串分割

str.split() 是 Python 中字符串类型的一个方法&#xff0c;可以用来将字符串按照指定的分隔符分割成多个子字符串。 例如&#xff0c;如果你有一个字符串 ‘a,b,c,d’&#xff0c;你可以这样分割它&#xff1a; >>> a,b,c,d.split(,) [a, b, c, d]这会将字符串按照…

Web API的方法论及实践

文章目录前言基本原则构建步骤API 实践商品呈现初始的设计个性化&#xff0c;千人千面 & 可视化超前的设计监控遗漏的监控业务服务效率是第一生产力业务服务API样例服务配置ClientInfo“用完即走”的业务服务一个周末的辛劳无数个喝咖啡的悠闲时光总结参考资料前言 对于网…

EMQX+阿里云飞天洛神云网络 NLB:MQTT 消息亿级并发、千万级吞吐性能达成

随着物联网技术的发展与各行业数字化进程的推进&#xff0c;全球物联网设备连接规模与日俱增。一个可靠高效的物联网系统需要具备高并发、大吞吐、低时延的数据处理能力&#xff0c;支撑海量物联网数据的接入与分析&#xff0c;从而进一步挖掘数据价值。 于今年五月发布的 EMQ…

Java后端知识之代码混淆-避免反编译工具获取原码

java, 代码混淆, 编译, 反编译本文是向大家介绍java后端小知识&#xff0c;它能够实现编译后的class代码加密&#xff0c;能够避免使用反编译工具获取源码。本文介绍java代码编译成class后&#xff0c;怎么避免用反编译工具获取源码。编译简单先看一下java源码反编译就是针对编…

MCU-51:单片机蜂鸣器播放孤勇者

目录一、蜂鸣器介绍二、驱动电路2.1 三极管驱动2.2 集成电路驱动三、蜂鸣器播放音乐3.1 键盘与音符对照3.2 音符与频率对照四、孤勇者乐谱五、代码演示前面学习了 MCU-51&#xff1a;单片机蜂鸣器播放音乐和提示音我们知道了可以用51单片机播放乐谱今天我们用51单片机播放 孤勇…

修改NuGet包默认存放位置

默认情况下&#xff0c;NuGet下载的包存放在系统盘(C盘中)&#xff0c;这样一来&#xff0c;时间长了下载的包越多&#xff0c;C盘占用的空间也就越多。 1、问题描述 默认情况下&#xff0c;NuGet下载的包存放在系统盘(C盘中&#xff0c;一般在路径C:\Users\用户\.nuget\packag…

让人意外,iPhone15将增加中国制造的比例,苹果再回头

业界人士指出苹果的iPhone15将会分单给中国代工商&#xff0c;屏幕、镜头玻璃等也会增加给中国厂商的比例&#xff0c;这是在业界传闻苹果试图摆脱中国制造之后的好消息&#xff0c;显示出苹果仍然需要中国制造。一、iPhone15加大中国制造比例据悉iPhone15 Pro max将会有部分订…

【20230105】pip pip3 替换国内镜像源

1 存在问题 在使用默认pip3安装库时&#xff0c;出现超时情况。 pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host‘files.pythonhosted.org’, port443): Read timed out. 2 国内的pip源 阿里云&#xff1a;https://mirrors.aliyun.com/pypi/sim…

k8s之使用yaml创建pod

写在前面 本文一起看下如何通过声明式的yaml文件来创建pod。 1&#xff1a;命令式和声明式 命令式就是具体告诉计算机做什么&#xff0c;比如我们写的Java代码&#xff0c;Dockerfile定义FROM&#xff0c;COPY&#xff0c;CMD&#xff0c;RUN&#xff0c;Expose等语句&#…

CVE-2017-12615 Tomcat PUT方法任意写文件漏洞复现

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是CVE-2017-12615 Tomcat PUT方法任意写文件漏洞复现。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次…

ModelForm实践--新建用户

Django组件Form&ModelForm_Neo_21的博客-CSDN博客 Django ModelForm用法详解 前面基本了解ModelForm,使用ModelForm添加用户 一.回顾ModelForm 基于 Model 的定义自动生成表单&#xff0c;这就大大简化了根据 Model 生成表单的过程。 简单的ModelForm class BookMode…

jdk、jmeter安装配置流程以及 双jdk配置和切换(自用)

文章目录一、jdk安装配置1.1 java8配置流程1.2 jdk17配置1.3 jdk没有jre怎么生成1.4 双jdk配置2、Jmeter安装配置电脑重装系统了&#xff0c;重新配下jdk和jmeter。一、jdk安装配置 配jmeter首先得有java。 1.1 java8配置流程 ① java8安装路径 下完直接安装就行 ② 配置环境…

Mysql单表查询30个经典案例

单表查询&#xff08;30个例子&#xff09; 单表查询30个例子新建一个数据表gradegrade表中插入数据1、查询1945班的成绩信息2&#xff0c;查询1945班&#xff0c;语文成绩大于60小于90的成绩信息3&#xff0c;查询学生表中1到5行的数据4&#xff0c;显示1945班英语成绩为80&am…