[M二叉树] lc105. 从前序与中序遍历序列构造二叉树(递归建树+迭代建树+经典问题)

文章目录

    • 1. 题目来源
    • 2. 题目解析

1. 题目来源

链接:105. 从前序与中序遍历序列构造二叉树
力扣题解:官方题解:从前序与中序遍历序列构造二叉树

之前的博文:

  • 剑指 offer 的博文,有图例,代码也十分清楚! [剑指-Offer] 7. 重建二叉树(二叉树、递归建树)

2. 题目解析

参考原有博文即可:剑指 offer 的博文,有图例,代码也十分清楚! [剑指-Offer] 7. 重建二叉树(二叉树、递归建树)


十分经典的问题哈,这里主要记录下还有一种迭代的写法,迭代写法可以去参考官方题解中的写法,确实第一次见这个巧妙的迭代建树的写法。


  • 时间复杂度 O ( n ) O(n) O(n)
  • 空间复杂度 O ( n ) O(n) O(n)

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {return build(preorder, 0, preorder.size() - 1, inorder, 0, inorder.size());}TreeNode* build(vector<int> &preorder, int pL, int pR, vector<int> &inorder, int iL, int iR) {if (pL > pR || iL > iR) return NULL;int i = iL;for (; i <= iR; i ++ ) {if (preorder[pL] == inorder[i])break;}TreeNode *node = new TreeNode(preorder[pL]);node->left = build(preorder, pL + 1, pL + i - iL, inorder, iL, i - 1);node->right = build(preorder, pL + i - iL + 1, pR, inorder, i + 1, iR);return node;}
};

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

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

相关文章

8.2 新特性 - 透明的读写分离

文章目录 前言1. 安装部署1.1 下载安装包1.2 MySQL Shell1.3 配置 MySQL 实例1.4 启动 ReplicaSet1.5 启动 8.2 Router 2. 测试路由总结 前言 MySQL 8.0 官方推出过一个高可用方案 ReplicaSet 主要由 Router、MySQL Shell、MySQL Server 三个组件组成。 MySQL Shell 负责管理…

【.NET Core】C#编程规范

【.NET Core】C#编程规范 文章目录 【.NET Core】C#编程规范一、概述1.1 结构清晰第一1.2 简洁之风1.3 代码风格保持一致性 二、命名约定三、类型参数命名指南3.1 请使用描述性名称命名泛型类型参数&#xff0c;除非单个字面名称完全具有自我说明性且描述性名称不会增加任何作用…

C++寒假打卡2.19

题目列表 #字母转换 难度系数 ⭐ &#xff08;送分&#xff09; #数位求和 难度系数 ⭐⭐ &#xff08;几乎也是送分&#xff09; #分糖果 难度系数 ⭐⭐⭐ #猴子摘桃 难度系数 ⭐⭐⭐ &#xff08;板字题&#xff09; #最大值 难度系数 ⭐⭐⭐⭐…

设计模式三:工厂模式

工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;其中后两者属于23中设计模式 各种模式中共同用到的实体对象类&#xff1a; //汽车类&#xff1a;宝马X3/X5/X7&#xff1b;发动机类&#xff1a;B48TU、B48//宝马汽车接口 public interface BMWCar {void s…

Bert基础(一)--transformer概览

1、简介 当下最先进的深度学习架构之一&#xff0c;Transformer被广泛应用于自然语言处理领域。它不单替代了以前流行的循环神经网络(recurrent neural network, RNN)和长短期记忆(long short-term memory, LSTM)网络&#xff0c;并且以它为基础衍生出了诸如BERT、GPT-3、T5等…

2024全年放假日历表及调休安排 用手机便签设置放假倒计时

对于绝大多数的上班族来说&#xff0c;春节长假已经结束&#xff0c;现在要回归到正常的工作和生活中。为了给生活增加一些“盼头”&#xff0c;很多小伙伴不约而同打开手机日历&#xff0c;查看下个法定节假日是什么时候。下面给大家具体讲一下2024全年放假日历表及调休安排&a…

UE5 C++ 创建可缩放的相机

一.要将相机设置在Pawn类里 1.在MyPawn头文件里&#xff0c;加上摇臂和相机组件 #include "GameFramework/SpringArmComponent.h" #include "Camera/CameraComponent.h" 2.在Pawm里声明SceneComponet&#xff0c;SpringArmComponent,CameraComponent组件…

CES 的Agent插件状态显示“故障”该如何处理?

Agent插件状态显示“故障”该如何处理&#xff1f; 操作系统监控插件每1分钟发送1次心跳&#xff1b;当服务端3分钟收不到插件心跳时&#xff0c;“插件状态”显示为“故障”。 “故障”原因可能为&#xff1a; Agent域名无法解析&#xff0c;请先确认修改DNS与添加安全组中D…

Excel生成不重复的UUID

第一步&#xff1a;在单元格中使用函数 第二步&#xff1a;下拉批量生成 生成函数如下&#xff1a; CONCATENATE(DEC2HEX(RANDBETWEEN(0,4294967295),8),DEC2HEX(RANDBETWEEN(0,42949),4),,DEC2HEX(RANDBETWEEN(0,42949),4),DEC2HEX(RANDBETWEEN(0,42949),4),DEC2HEX(RANDBETW…

Unity MVC开发模式与开发流程详解

在Unity游戏开发中&#xff0c;采用MVC&#xff08;Model-View-Controller&#xff09;模式是一种非常常见的设计模式。MVC模式将应用程序分为三个部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#x…

分页工具类

介绍 方法 convertToIPage 用于将一个 List 转换为 IPage&#xff0c;并在方法内部计算总数和总页数。该方法利用了 MyBatis-Plus 框架提供的 IPage 接口&#xff0c;并采用泛型 <T>&#xff0c;使其能够兼容任意类型的数据。 package com.util;import com.baomidou.my…

vue3+element Plus+ts 自定义主题色,以及生成主题色各种透明度

目录 思路 安装css-color-function【接收一个颜色值&#xff0c;生成不同的透明度】 获取后台配置的主题色或者使用ColorPicker修改主题色 最终结果如下 思路 本篇文章的主体思路是从element Plus官网引申而来。结合了我以前用vue2element-ui配置主题色生成透明度&#x…

谈谈:你在工作中用到的设计模式!

谈谈:你在工作中用到的设计模式! Hello大家龙年好! 春节的假期转眼间过去,我们也要回归往日的节奏 因为最近和小伙伴们聊天发现,我们普遍在面试中,对被问起设计模式在工作中的应用,既有点熟悉,又有点陌生, 在网上看吧,又感觉鸡肋(为啥?不能解燃煤之急啊!哈哈),所以,为了打破这…

【大厂AI课学习笔记】【2.2机器学习开发任务实例】(5)数据理解

数据理解&#xff0c;就是理解数据。 理解数据&#xff0c;就是观察数据&#xff0c;获得更多数据的特点。 这里要对数据进行一些处理。 查看样本数据的均值、最大值、最小值、数量、标准差等&#xff1b; 查看更详细的数据分位数信息。 通过观察加深数据理解&#xff0c;…

体验即王道:提升B端管理系统用户体验的10大法则

大家好&#xff0c;我是贝格前端工场&#xff0c;专注于前端开发和UI设计&#xff0c;有需求可以私信。本篇从用户体验角度来分析管理系统如何设计和开发。 一、用户体验的重要性 B端管理系统的用户体验对于企业的成功至关重要。 提高工作效率&#xff1a;一个好的用户体验可…

什么是网络安全?一文了解网络安全究竟有多重要!

随着互联网的普及和数字化进程的加速&#xff0c;网络安全已经成为我们生活中不可或缺的一部分。然而&#xff0c;很多人对于网络安全的概念仍然模糊不清。 那么&#xff0c;什么是网络安全&#xff1f;它究竟有多重要呢&#xff1f; 一、网络安全的定义 网络安全是指保护网络…

python + requests + pytest 接口自动化测试

测试框架目录 目录名称目录内容common1.读取测试用例的方法 2.连接数据库的方法(pymysql) 3.封装自己的请求 4.封装输出日志文件 5.读取保存的数据文件 封装一些公共方法api存储测试接口case封装测试用例data存放测试数据data.xlsx 接口需要用到的字段写进Excel logs存放日志文…

Sora一出 哪里又要裁员了?

上班前夕迎来大新闻&#xff0c;那就是Sora了&#xff0c;Sora是什么&#xff0c;有什么牛逼之处&#xff0c;怎么实现的&#xff0c;我们跟着官方文档透露出来的一点点信息&#xff0c;简单的捋一捋。 一、Sora是什么 官方给出的定义是&#xff1a;世界模拟器。这很明显有夸大…

js 多对象去重(多属性去重)

需求中发现后端可能没有处理重复数据&#xff0c;这个时候前段可以直接解决。 在 JavaScript 中&#xff0c;可以使用 Set 数据结构来进行多对象的去重。Set 是 ES6 新引入的集合类型&#xff0c;其特点是元素不会重复且无序。 下面是一个示例代码&#xff0c;展示如何通过 S…

three.js 物体下落动画(重力加速度)

效果&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><el-button click"loopFun"> 物体下落…