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


代码如下,开袋即食
class Solution {private Map<Integer,Integer> map;public TreeNode buildTree(int[] preorder, int[] inorder) {map = new HashMap<>();for(int i =0;i<preorder.length;i++){map.put(inorder[i],i);}return build(preorder,inorder,0,preorder.length-1,0,preorder.length-1);}public TreeNode build(int[] preorder,int[] inorder,int p_left,int p_right,int i_left,int i_right){if(p_left>p_right||i_left>i_right) return null;int p_root = p_left;//前序比那里的第一个节点就是根节点int i_root = map.get(preorder[p_root]);//在中序遍历中定位根节点的位置TreeNode root = new TreeNode(preorder[p_left]);int left_size_tree = i_root-p_left;//获得左子树的长度root.left = build(preorder,inorder,p_left+1,p_left+left_size_tree,i_left,i_root-1);root.right = build(preorder,inorder,p_left+left_size_tree+1,p_right,i_root+1,i_right);return root;}
}
同样这里需要注意前序遍历和中序遍历的左右指针的一个边界问题。
左指针遍历的时候
前序左边界:p_left+1即可
前序右边界:p_left+left_size_tree
中序左边界:i_left
中序右边界:i_root-1
右指针遍历的时候
前序左边界:p_left+left_size_tree+1即可
前序右边界:p_right
中序左边界:i_root+1
中序右边界:i_right
学生所做,记录学习。
另外有一题类似,解法和本题有异曲同工之处。
从中序和后序遍历序列构造二叉树
相关文章:
从前序与中序遍历序列构造二叉树
代码如下,开袋即食 class Solution {private Map<Integer,Integer> map;public TreeNode buildTree(int[] preorder, int[] inorder) {map new HashMap<>();for(int i 0;i<preorder.length;i){map.put(inorder[i],i);}return build(preorder,inord…...
antd5上传图片显示405解决
antd5上传图片,默认使用上传方式会调用本地的接口。 405 Method Not Allowed 状态码 405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求。 Upload {...props}beforeUpload{(file) > {//自定义上传图片的逻辑//最后返回falsereturn false }} &…...
生成瑞利信道(Python and Matlab)
channel h k h_k hk is modeled as independent Rayleigh fading with average power loss set as 10^−3 Python import numpy as np# Set the parameters average_power_loss 1e-3 # Average power loss (10^(-3)) num_samples 1000 # Number of fading samples to …...
数据结构Demo——简单计算器
简单计算器 一、项目介绍二、技术使用三、具体代码实现1.前端部分2.后端部分 一、项目介绍 本项目实现了一个通过网页访问的简单计算器,它可以对带括号的加减乘除表达式进行计算并将计算结果返回给用户,并且可以对用户输入的表达式进行合法性判断&#…...
java实现多文件打包压缩,导出zip文件
一.实现多文件打包压缩 Testpublic void testZipFile() throws IOException {String filePath "D:\\导出压缩文件.zip";OutputStream outputStream new FileOutputStream(filePath);try (ZipOutputStream zipOutputStream new ZipOutputStream(outputStream)) {//…...
java-枚举类的使用
public enum MyEnum {ONE("一"),TWO("二"),THREE("三");private final String myNum;MyEnum(String myNum) {this.myNum myNum;}public String getMyEnum() {return myNum;} }调用 MyEnum num MyEnum.ONE; System.err.println(num.getMyEnum…...
Vue插槽
插槽的作用就是在组件中的指定位置传入指定的内容 比如我们有两个相同样式的分类栏,但是里面的内容不同,一个是展示图片,一个是展示ul列表: 这样的情况我们就可以使用插槽来实现。 一、默认插槽 (一)指定…...
学习c++的第二天
目录 数据类型 基本数据类型 typedef 声明 枚举类型 类型转换 变量类型 变量定义 变量声明 左值(Lvalues)和右值(Rvalues) 变量作用域 数据类型 基本数据类型 C 为程序员提供了种类丰富的内置数据类型和用户自定义的数…...
Android NDK开发详解之调试和性能分析的系统跟踪概览
Android NDK开发详解之调试和性能分析的系统跟踪概览 系统跟踪指南 “系统跟踪”就是记录短时间内的设备活动。系统跟踪会生成跟踪文件,该文件可用于生成系统报告。此报告有助于您了解如何最有效地提升应用或游戏的性能。 有关进行跟踪和性能分析的全面介绍&#x…...
AD9371 官方例程HDL JESD204B相关IP端口信号
AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 : AD9371 官方…...
蓝牙服务:优化体验,提高连接效率
文章目录 1. 对蓝牙连接进行优化2. 设备配对的缓存机制3. 优化蓝牙连接的稳定性 蓝牙技术已经成为我们生活中不可或缺的一部分,我们使用它进行音频传输、数据传输、设备连接等等。然而,有时蓝牙连接会让用户感到非常困扰,比如连接速度缓慢、连…...
SSM校园设备管信息管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
选题理由 随着计算机网络及多媒体技术的广泛应用,互联网已成为高校办学的基础设施和必备条件,基于互联网的高校信息管理越来越综合化,越来越多的教学管理、行政管理工作将架构在互联网上,互联网正在变为学校实施教学、科研和管理…...
iOS的应用生命周期以及应用界面
在iOS的原生开发中,我们需要特别关注两个东西:AppDelegate和ViewController。我们主要的编码工作就是在AppDelegate和ViewControlle这两个类中进行的。它们的类图如下图所示: AppDelegate是应用程序委托对象,它继承了UIResponder类…...
Macos下安装使用Redis
Redis 是一个基于内存的key-value的结构数据库适合存储热点数据 Macos安装Redis https://redis.io/docs/getting-started/installation/install-redis-on-mac-os/安装redis brew install redis查看安装信息: brew info redis前台启动redis: redis-server后台启…...
Redis的四种部署方案
这篇文章介绍Reids最为常见的四种部署模式,其实Reids和数据库的集群模式差不多,可以分为 Redis单机模式部署、Redis主从模式部署、Redis哨兵模式部署、Cluster集群模式部署,其他的部署方式基本都是围绕以下几种方式在进行调整到适应的生产环境…...
Microsoft Edge不能工作了,可能原因不少,那么如何修复呢
Microsoft Edge打不开或不能加载网页是用户在Windows 10、Android、Mac和iOS设备上的网络浏览器上遇到的许多错误之一。其他Microsoft Edge问题可能包括浏览器窗口和选项卡冻结、网站崩溃、互联网连接错误消息以及丢失Microsoft Edge书签、收藏夹、密码和收藏。 Microsoft Edg…...
算法---缺失的第一个正数
题目 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例 1:输入:nums [1,2,0] 输出:3 示例 2:输入:nums …...
【算法与数据结构】--算法应用--算法和数据结构的案例研究
一、项目管理中的算法应用 在项目管理中,算法和数据结构的应用涉及项目进度、资源分配、风险管理等方面。以下是一些案例研究,展示了算法在项目管理中的实际应用: 项目进度管理: 甘特图算法:甘特图是一种项目进度管理…...
java如何获取调用接口的ip?
获取调用者的ip 场景:想知道哪个ip访问的某个接口时,就需要打印出来看看,这时就可以使用这个方法了。 案例: //HttpServletRequest 入参加上,请求对象public ForkResponse queryXXX(RequestBody XXXX xxxx, HttpServletRequest …...
ubuntu 18 更新git版本到 2.80.1
前言 使用gitlab的时候,发现下面这条语句不能用 git init --initial-branch XXX查看git version git version下载 wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.38.1.tar.gz 或者 https://git-scm.com/download/linux 或者去github上面下载…...
Redis命令处理机制源码探究霉
一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储,而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码,常规方式只能重新配置连接,效率极低。本项目只作为学习研究使用,不做其他…...
2026前端面经
2026前端面经1、前端怎么做到页面无刷新1、前端怎么做到页面无刷新 前端无刷新更新页面,核心就是不重新加载整个 HTML 页面,只局部更新数据和视图,这也是现代 Web 应用(SPA)的核心能力。 原生 AJAX (XMLHttpRequest)…...
3步实现微信聊天记录完整备份:让你永久保存重要对话的开源工具
3步实现微信聊天记录完整备份:让你永久保存重要对话的开源工具 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字化时代,微信聊天记录已成为我…...
如何通过可视化学习快速掌握RISC-V?专业仿真平台全解析
如何通过可视化学习快速掌握RISC-V?专业仿真平台全解析 【免费下载链接】Ripes A graphical processor simulator and assembly editor for the RISC-V ISA 项目地址: https://gitcode.com/gh_mirrors/ri/Ripes RISC-V学习工具的选择直接影响掌握效率&#x…...
为什么你的C# 13主构造函数无法单步执行?微软Roslyn团队2024Q2调试协议变更详解(首批实测报告)
第一章:为什么你的C# 13主构造函数无法单步执行?C# 13 引入的主构造函数(Primary Constructor)语法简洁优雅,但调试时却常出现断点失效、F10/F11 无法单步进入等问题。根本原因在于:**主构造函数不生成独立…...
强力解锁B站字幕:跨平台字幕下载与转换完整方案
强力解锁B站字幕:跨平台字幕下载与转换完整方案 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否曾为B站视频的字幕无法下载而烦恼?想…...
Cadence IC618/Spectre231安装避坑指南:详解License配置、环境变量隔离与依赖检查
Cadence IC618/Spectre231深度配置实战:从环境隔离到长期稳定运行的进阶指南 在芯片设计领域,Cadence工具链的稳定运行直接关系到项目进度与设计质量。许多工程师在完成基础安装后,常会遇到许可证报错、环境冲突、工具崩溃等"疑难杂症&q…...
四柱排盘免费软件怎么选?天府Agent好用吗
在数字化渗透到传统文化领域的今天,命理分析早已告别了手工排盘、纸笔记录的传统模式,各类专业排盘工具层出不穷,很多命理爱好者都在找好用的四柱排盘免费软件,今天就从实际使用体验出发,整理市面上常见工具的特点&…...
从OpenAI Assistants API看厂商对Agent生态的战略布局
从OpenAI Assistants API看厂商对Agent生态的战略布局 引言 背景介绍 人工智能技术正在以前所未有的速度改变着我们的世界。从最早的规则引擎到机器学习,再到如今的大语言模型(LLMs),AI技术的每一次飞跃都带来了新的可能性和商业机…...
OpenClaw二次开发入门:Qwen3-14b_int4_awq定制化中间件编写
OpenClaw二次开发入门:Qwen3-14b_int4_awq定制化中间件编写 1. 为什么需要定制化中间件 去年我在用OpenClaw对接本地部署的Qwen3-14b_int4_awq模型时,遇到了几个棘手问题:网关日志不完整导致调试困难、某些危险指令被直接执行、模型特有参数…...
