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

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

public static TreeNode buildTree(int[] preorder, int[] inorder) {map= new HashMap<>();   // 方便根据数值查找位置for (int i = 0; i < inorder.length; i++) { // 用map保存中序序列的数值对应位置map.put(inorder[i], i);}return traversal(preorder,0,preorder.length, inorder,0,inorder.length);  // 前闭后开}//递归public static TreeNode traversal(int[] preorder,int preBegin,int preEnd,int[] inorder,int inBegin,int inEnd){if(preBegin>=preEnd || inBegin>=inEnd){return null;}int rootValue=preorder[preBegin];TreeNode root=new TreeNode(rootValue);  //创建根节点int rootIndex=map.get(rootValue); //根节点在中序遍历中的位置int leftInLen=rootIndex-inBegin;   //计算左子树的长度//构造左子树int leftPreBegin=preBegin+1;    //左子树的前序遍历起点int leftPreEnd=preBegin+leftInLen+1;  //左子树的前序遍历终点int leftInBegin=inBegin;     //左子树的中序遍历起点int leftInEnd= rootIndex;   //左子树中序遍历终点root.left=traversal(preorder,leftPreBegin,leftPreEnd,inorder,leftInBegin,leftInEnd);//构造右子树preBegin=preBegin+leftInLen+1;    //右子树的前序遍历起点preEnd=preEnd;  //右子树的前序遍历终点inBegin=rootIndex+1;     //右子树的中序遍历起点inEnd= inEnd;   //右子树中序遍历终点root.right=traversal(preorder,preBegin,preEnd,inorder,inBegin,inEnd);return root;}

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

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

相关文章

智和信通助力中国移动湖南某市分公司县级政府外网运维项目

中国移动湖南某市分公司承建市下属某县政务外网网络建设项目&#xff0c;且在网络建设完工后&#xff0c;承担起运维职责&#xff0c;随着工作的推进市移动公司发现仅靠人力难以高效开展运维工作。 设备类型&#xff1a;OLT、ONU等通信设备 设备品牌&#xff1a;华为、中兴等…

TQSDRPI开发板教程:实现LWIP自环

项目资源分享 链接&#xff1a;https://pan.baidu.com/s/1QckFYSwua-Fpxk3tewledQ 提取码&#xff1a;bewt 打开vivado2019.1创建工程 下一步 设置工程名称与地址。勾选reate…选项&#xff0c;会创建一个新的文件夹&#xff0c;项目保存在其中&#xff0c;文件夹名称与工程名…

【数据库】MySQL表的操作

目录 一.创建表 二.查看表 三.修改表 四.删除表 一.创建表 基本语法&#xff1a; CREATE TABLE table_name(field1 datatype,field2 datatype,field3 datatype) character set 字符集 collate 校验规则 engine 储存引擎field表示列名 datatype表示列的类型 charatcer se…

L1527射频编码芯片 百万组通用编码器,可替代EV1527

L1527 是CMOS 结构的预烧内码&#xff08;遥控中的地址码&#xff09;通用编码器&#xff0c;内有 20 位可预烧写 100 万组内码组合&#xff0c;使得重码率很低&#xff0c;具有更高安全性。芯片内集成误操作禁止功能&#xff0c;在按键输入有效且状态不变时&#xff0c;芯片连…

生产现场的作业标准化,这么做就对了!

制造型企业的生产过程是以计划的成本、工时生产出达到客户要求的产品。如果在制造过程中&#xff0c;产品工艺、作业方法或作业条件有所变化的话&#xff0c;一定无法生产出符合上述要求的产品。 因此&#xff0c;公司领导必须对作业工艺流程、作业方法、作业条件进行标准化管…

全是干货:融资融券(两融)名词科普!

一、两融内涵 融资融券&#xff0c;也被称为证券信用交易&#xff0c;其内涵主要涵盖以下方面&#xff1a; 首先&#xff0c;它指的是投资者向具有融资融券业务资格的证券公司提供担保物&#xff0c;并借入资金用于买入证券&#xff08;融资交易&#xff09;或借入证券并卖出&…

kettle 使用动态变量名定义变量

name是变量&#xff0c;value 值也是变量 我需要把name作为变量名&#xff0c;value作为变量值&#xff1b; 在kettle中&#xff0c;使用javascript脚本 key与lastVsxzl都是变量 //Script here setVariable(key,lastVsxzl,r);var rgetVariable(key,r); Demo 1、从记事本里面…

Python中限制输入数值范围的技术性探讨

目录 一、引言 二、使用内置函数限制输入范围 三、使用条件语句进行范围检查 四、使用异常处理增强鲁棒性 五、结合第三方库进行输入验证 六、总结 一、引言 在Python编程中&#xff0c;用户输入是程序与用户交互的重要方式之一。然而&#xff0c;由于用户输入的多样…

2024版能源领域网络与数据安全政策全集

能源是工业的粮食&#xff0c;能源安全事关国家根本安全。当今国际局势风云变幻&#xff0c;全球地缘政治、经济、科技体系正经历深刻变化&#xff0c;能源局势将更加错综复杂&#xff0c;威胁能源安全的各种“灰犀牛”“黑天鹅”事件时有发生&#xff0c;促使国际能源版图深刻…

Capto 标准版【简体中文+Mac 】

Capto 是一套易于使用的屏幕捕捉、视频录制和视频编辑 Capto-capto安装包-安装包https://souurl.cn/DPhBmP 屏幕录制和教程视频制作 记录整个屏幕或选择的任何特定区域。在创建内容丰富的教程视频时选择显示或隐藏光标。无论您做什么&#xff0c;都可以确保获得高质量的视频。…

Arm发布Cortex X925、A725、A520,Armv9.2架构

随着半导体行业的不断发展&#xff0c;Arm 通过突破技术界限&#xff0c;为终端用户提供尖端解决方案&#xff0c;在核心和 IP 架构创新方面处于领先地位&#xff0c;尤其是在移动领域。2024 年&#xff0c;Arm 的年度战略进步重点是增强去年的 Armv9.2 架构&#xff0c;并带来…

kali系统baopoWiFi密码

kali系统baopoWiFi密码,仅供学习 取决强大的密码字典,如果别人密码设置的足够安全,也无法破解成功,并不是100%破解 一、准备一个无线网卡&#xff0c;需要免驱动&#xff0c;最好知道频率2.4HGZ还是5.0GHZ 二、插上USB接口&#xff0c;vmware模拟器选择连接虚拟机 三、输入命…

[Android] MediaCodec configure过程中的 profile 和 level

Android 的 MediaCodec 组件会在 configure 的过程中携带 profile 和 level 信息&#xff0c;比如 int32_t profile 8 int32_t level 16384 这些信息表明将要到来的stream的编码profile 和 level&#xff0c;因此底层在分配硬件解码器资源的时候是需要结合 分辨率&#xff0c…

代码随想录算法训练营day43 | 343. 整数拆分、96.不同的二叉搜索树

343. 整数拆分 确定dp数组以及下标的含义&#xff1a;dp[i]表示分拆数字i的最大乘积确定递推公式&#xff1a;dp[i] max(dp[i], max(i - k) * k, dp[i - k] * k});dp的初始化&#xff1a;dp[0]和dp[1]都是没有意义的&#xff0c;纯粹是为了后续遍历服务的确定遍历顺序&#x…

C++ day2 练习

思维导图 自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show() #inclu…

基于朴素贝叶斯算法的新闻类型预测,django框架开发,前端bootstrap,有爬虫有数据库

背景 在当今信息爆炸的时代&#xff0c;新闻内容的分类和预测对于用户个性化推荐和信息检索至关重要。基于朴素贝叶斯算法的新闻类型预测系统结合了机器学习和自然语言处理技术&#xff0c;能够根据新闻内容自动进行分类&#xff0c;提高新闻处理效率和准确性。采用Django框架…

科普之旅 | 什么是大语言模型

作者&#xff1a;陈之炎本文约2000字&#xff0c;建议阅读5分钟 本文介绍了大语言模型。 导读 在这个信息爆炸的时代&#xff0c;你是否曾幻想过与机器流畅交谈&#xff0c;或是让AI助你笔下生花&#xff0c;创作出惊艳的文章&#xff1f;这一切&#xff0c;都离不开大语言模型…

【一小时学会Charles抓包详细教程】Charles证书安装与SSL代理设置完全详解 (6)

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 Charles 安装证…

使用element的小弹框并修改css

使用el-popover来做弹框&#xff1a; 滑动或点击元素要加插槽slot"reference"来展示弹框&#xff1b; <el-popoverplacement"top"width"166"trigger"hover"popper-class"popover"><div><div><div>…

深度解读:Apache Kafka如何超越消息引擎的界限

你提出了一个非常有趣且广泛的话题:Apache Kafka不仅仅是一个消息引擎系统。通过了解Kafka的发展历程和现状,我们可以更全面地理解其功能和应用场景。 Kafka的发展历程 起源和初衷 Kafka最初由LinkedIn开发,目的是解决其内部对数据实时处理和分析的需求。LinkedIn当时面临…