105-从前序与中序遍历序列构造二叉树

用deepseek部署全自动的机器人--bytebot Bytebot是一款开源AI桌面代理,提供完整的虚拟桌面环境,支持跨应用任务处理、文件管理、文档处理等复杂工作流。其技术架构包含核心控制、LLM代理、UI等组件,支持Docker和Kubernetes部署。本文演示了基于CloudStudio的部署流程,包括环境配置、Docker部署及DeepSeek API集成,实现多模型调用功能。 阅读详情

题目

给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。

示例 1:

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]

题解

var buildTree = function(preorder, inorder) {
    if(!preorder.length)
        return null;
    let root = new TreeNode(preorder[0]);
    let mid = inorder.findIndex((number) => number === root.val);
    root.left = buildTree(preorder.slice(1, mid + 1), inorder.slice(0, mid));
    root.right = buildTree(preorder.slice(mid + 1, preorder.length), inorder.slice(mid + 1, inorder.length));
    return root;
};

var buildTree = function(preorder, inorder) {
    if(!preorder.length) return null;
    let root=new TreeNode(preorder[0])
    let mid=inorder.findIndex((number)=>number == root.val)//用大括号可能比较占空间???
    root.left=buildTree(preorder.slice(1,mid+1),inorder.slice(0,mid))//preorder再次切割传输的时候不需要去除mid,因为mid对应的数就是第一个--已经在第一个去掉了
    root.right=buildTree(preorder.slice(mid+1,preorder.length),inorder.slice(mid+1,inorder.length))
    return root
};

思路:

  1. 前序遍历的第一个值就是根节点,根据根节点切割中序遍历的数组,为左中和右中,然后根据中序遍历出的左子树和右子树的长度分割前序遍历的数组,然后进行迭代。分数组的时候需要注意区间的范围。
  2. array:slice(start,end)左闭右开
  3. findIndex 传入一个函数,在数组中找出符合该函数的第一个index,不存在则返回-1(别记错名字了- -
泰山派rk3566 audio音频基础介绍 本文介绍了嵌入式系统中音频处理的基础知识,重点围绕RK3566平台的音频子系统展开。文章首先解释了音频信号从模拟到数字的转换过程,包括采样率、位深和声道等核心概念。随后详细分析了嵌入式音频开发中的关键接口:I2C用于控制音频编解码器,I2S作为专用音频数据传输总线,以及PCM作为原始音频格式和ALSA设备抽象的双重含义。通过对这些基础概念和接口的解析,为在RK3566平台上进行音频驱动开发和应用调试提供了理论基础。 阅读详情

相关推荐

告别硬件!用Wokwi在线模拟ESP32点灯,5分钟搞定开发环境搭建

本文介绍如何使用Wokwi在线模拟器快速搭建ESP32开发环境,5分钟内完成点灯实验。无需硬件即可体验GPIO控制、PWM调光等核心功能,特别适合物联网开发初学者和快速原型验证。Wokwi的零成本、全功能模拟特性让嵌入式开发变得前所未有的简单高效。

weixin_42567497的博客 497

从前序与中序遍历序列构造二叉树(中等难度)

目录题目概述(中等难度)思路与代码思路展现代码示例总结 题目概述(中等难度) 给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。 示例 1: 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] 题目链接: 点我进入l

想要成为大佬的彪彪 340

【OTDR曲线工具箱】04 批量生成sor文件

软件下载地址:http://120.78.150.214:9999/isora.zip 通过一个测试数据sor文件,批量生成多个测试文件(基于Bellcore GR196及SR-4731标准)。主要考虑哪些问题: 1、sor测试是否符合要求(主要是衰减系数) 2、多个文件的创建时间 3、文件必须随机处理,不要看省去一模一样。 来说说怎么操作的 第一步:选择参考曲线 参考曲线的选择由两种方法:从文件中导入、从曲线库中选择。 其中曲线库分为公共库和个人库两种,平时浏览的sor文件都可以加载到库中。 第二步

夜晚是传说的博客 5280

[二叉树] 从前序与中序遍历序列构建二叉树

给定一棵树的前序遍历 preorder 与中序遍历 inorder,然后构造二叉树并返回其根节点。 public int preIndex = 0; public TreeNode buildTreeChild(int[] preorder, int[] inorder, int inbegin, int inend) { if(inbegin > inend) return null; //1.依次取前序遍历的第一个数,.

Darling_sheeps的博客 309

桌面云虚拟机Ubuntu离线安装open-vm-tools

公司办公在桌面云中进行开发,桌面云是无法访问外网的,然后又有安装虚拟机的需求,使用VMware自带的VMware-tools安装功能失败,报错也需要联网才能解决,如果不安装VMware-tools,则虚拟机无法使用共享文件夹功能以及与本机共享剪贴板功能,非常难受,故自己研究解决如何离线安装open-vm-tools(open-vm-tools 是 VMware Tools 的开源实施)打开Ubuntu,可以在文件中看到生成的ISO文件,点开,将四个软件包复制粘贴至桌面。

weixin_43397593的博客 5082

【STC8G1K08A串口使用】

STC8G1K08A串口打印“Hello world”

m0_47459564的博客 1万+

LeetCode从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 给定一棵树的前序遍历preorder与中序遍历inorder。请构造二叉树并返回其根节点。 示例 1: 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] 思路: 从两个遍历序列中构造出二叉树是...

TranSad的博客 3652

AFSim编译一:windows

AFSim在windows上的编译

Meepo的博客 4740

LeetCode每日一题-从前序与中序遍历序列构造二叉树

题目 给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。 Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] Output: [3,9,20,null,null,15,7] 提示: 1 <= preorder.length <= 3000 inorder.length == preorder.length -3000 <= preorder[i], inor.

zilong00007的专栏 494

Android oom_adj 更新原理(一)

通过之前的两篇博文《lmkd 机制详解》和《lmkd中adj score的算法剖析》中,根据计算出来的 min_score_adj 选择大于该值的 oom_adj 的进程进行 kill 处理。oom_adj 随着应用状态的不同其值也是伴随着变化的。本文将通过源码剖析 oom_adj 更新的原理。

私房菜 2657

Vue - 快速入门,这一套就够了!(Vue core + 案例 + 效果演示)

前置条件:掌握 HTML、CSS、JavaScript、AJAX.工具:VsCode.插件:Live Server(浏览器实时预览)Ps:建议都提前下载下来,没网的时候也能用.

CYK_byte的博客 4万+

二叉树的前中后和层序遍历详细图解(递归和非递归写法)

我家门前有两棵树,一棵是二叉树,另一棵也是二叉树。 遍历一棵二叉树常用的有四种方法,前序(PreOrder)、中序(InOrder)、后序(PastOrder)还有层序(LevelOrder)。 前中后序三种遍历方式都是以根节点相对于它的左右孩子的访问顺序定义的。例如根-&gt;左-&gt;右便是前序遍历,左-&gt;根-&gt;右便是中序遍历,左-&gt;右-&gt;根...

Monster_ii的博客 8万+

MISRA C 详解 · 专栏06:2023 与 2025 更新总览(相对 2012 的差异)

本专栏 01~05 篇基于(143 规则 + 16 指令)。这六年间标准又前进了两步——(大改)和(微调)。本文补充说明「相对 2012,标准变在哪」,并给出新增规范的代表性示例。

XavierKong的博客 74

LeetCode第105题_从前序与中序遍历序列构造二叉树

给定两个整数数组preorder和inorder,其中preorder是二叉树的inorder是同一棵树的,请构造二叉树并返回其根节点。

qq_40263592的博客 1580

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LeetCode 105. 从前序与中序遍历序列构造二叉树

LeetCode 105. 从前序与中序遍历序列构造二叉树 题目链接 3 / \ 9 20 关于二叉树的遍历,其实有个比较好记的方法,假设有一个棵树,只有三个节点,左节点树,当前节点,右边节点。 假设需要打印中间节点(根节点),有三种输出方式 1.按照左、中、右, 9-3-20 由于中间节点在中间输出,称为前序遍历,同理 2.中、左、右 中序遍历 3-9-20 3.左、右、中 后续遍历 9-20-3 所以题目中的二叉树的遍历为 3 / \ 9 20 /

liuhao192的博客 274

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

105. 从前序与中序遍历序列构造二叉树

本题主要考点是二叉树的遍历特性以及递归构建二叉树的能力。利用前序遍历的第一个元素是根节点,在中序遍历中找到该根节点位置,以此划分左右子树的节点集合,再递归构建左右子树。是同一棵树的中序遍历,请构造二叉树并返回其根节点。是二叉树的前序遍历,

qq_40844444的博客 857

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

leetcode105. 从前序与中序遍历序列构造二叉树

leetcode105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 先看这么一颗...

peony的博客 183

【Hot100】LeetCode—105. 从前序与中序遍历序列构造二叉树

让前序的第一个元素作为中序的分割点。

weixin_44382896的博客 748

从前序与中序遍历序列构造二叉树-Leetcode 105-python

从前序与中序遍历序列构造二叉树-Leetcode 105 思路来自:https://blog.youkuaiyun.com/htt789/article/details/80164049 脑子不好使 思路: 1.前序序列第一个为根结点,在中序序列中找到该结点位置,中序序列就分为左右子树结点 2.前序序列除第一个结点,其余为左右子树结点,根据中序序列中左右子树各自的长度将前序序列划分了左右子树 3....

小铅笔 412

力扣 105 题:从前序与中序遍历序列构造二叉树

/ 定义二叉树节点结构体int val;

weixin_48941116的博客 902

leetcode105深度解析:从前序与中序遍历序列构造二叉树

本文讲解如何通过前序遍历和中序遍历序列重建二叉树。核心思路是利用前序确定根节点,中序划分左右子树,通过递归解决子问题。具体步骤包括:1)前序首元素为根节点;2)在中序中找到根节点位置划分左右子树;3)根据子树节点数量划分前序序列;4)递归构建左右子树。代码实现中通过HashMap优化查找效率,使时间复杂度降为O(N),空间复杂度为O(N)。关键点在于区间定义和递归终止条件的处理。

lyh2004_08的博客 902

Leecode105 从前序与中序遍历序列构造二叉树

Leecode105 从前序与中序遍历序列构造二叉树题目:思路:代码分析:代码实现: 题目: 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 … / \ . 15 7 来源:力扣(L...

a258216248的博客 294

Java题解LeetCode——105.从前序与中序遍历序列构造二叉树

LeetCode——105.从前序与中序遍历序列构造二叉树 题目 105.从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 解析 图来自LeetCode官方题解 递归创建。思路如上图: 通过前序数组来确定

影龙武的博客qq_43594119 715

105. 从前序与中序遍历序列构造二叉树【 力扣(LeetCode) 】

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

yyh520025的博客 941

LeetCode 105:从前序与中序遍历序列构造二叉树

目录LeetCode 105: 从前序与中序遍历序列构造二叉树题目描述解题递归迭代 LeetCode 105: 从前序与中序遍历序列构造二叉树 题目描述 根据一棵树的前序遍历与中序遍历构造二叉树。 【注意】 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 【难度】  中等 解题     思路和L

s_Shune 162

leetcode 105. 从前序与中序遍历序列构造二叉树   medium

leetcode105. 从前序与中序遍历序列构造二叉树 medium 题目描述: 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 解题思路: 由于先序的顺序的第一个肯定是根,所以原二叉树的根节点可以知道,题目中给了一个很关键的条件就是树中没有相同元素,有了这个条件我们就可以在中序遍历中也定位出根节点的位置,并以根节点...

speargod的博客 194
上一篇: 104-二叉树的最大深度
下一篇: 114-二叉树展开为链表
codrab
博客等级 码龄10年 15粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codrab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值