LeetCode 105:从前序与中序遍历构造二叉树,Java 递归解法详解
一、题目描述给定一棵二叉树的前序遍历preorder和中序遍历inorder请还原这棵二叉树。题目保证数组中没有重复元素。preorder [3, 9, 20, 15, 7] inorder [9, 3, 15, 20, 7]构造结果如下3 / \ 9 20 / \ 15 7关键是从两种遍历序列中确定根节点并划分左右子树。二、前序找根中序分左右先回顾遍历顺序前序遍历根 - 左 - 右 中序遍历左 - 根 - 右前序遍历的第一个元素3是根节点。在中序遍历中找到3[9, 3, 15, 20, 7] ↑ 根节点根节点左边的[9]属于左子树右边的[15,20,7]属于右子树。左子树只有一个节点因此可以同步划分前序遍历左子树preorder [9]inorder [9] 右子树preorder [20,15,7]inorder [15,20,7]两个子问题与原问题结构相同因此可以递归构造从前序遍历中取出当前根节点在中序遍历中找到根节点的位置递归构造左子树递归构造右子树。三、完整 Java 代码class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { int len preorder.length; if (len 0) { return null; } TreeNode root new TreeNode(preorder[0]); // 找到根节点在中序遍历中的索引位置,这个值也是左子树的所有元素个数 int rootInInorder indexOf(inorder, preorder[0]); // 前序遍历中左子树的部分和右子树的部分 int[] preLeft Arrays.copyOfRange(preorder, 1, 1 rootInInorder); // 复制是左闭右开区间 int[] preRight Arrays.copyOfRange(preorder, 1 rootInInorder, len); // 中序遍历中左子树的部分和右子树的部分 int[] inLeft Arrays.copyOfRange(inorder, 0, rootInInorder); int[] inRight Arrays.copyOfRange(inorder, 1 rootInInorder, len); // 递归构建左右子树 root.left buildTree(preLeft, inLeft); root.right buildTree(preRight, inRight); return root; } // 返回 x 在 a 中的下标保证 x 一定在 a 中 private int indexOf(int[] a, int x) { for (int i 0; ; i) { if (a[i] x) { return i; } } } }四、常见错误1. 把中序遍历的第一个元素当成根节点根节点由前序遍历确定中序遍历只负责划分左右区域。2. 先构造右子树全局指针按“根、左、右”移动必须先递归左子树。3. 区间没有排除根节点正确边界为root.left build(inorderLeft, rootIndex - 1); root.right build(rootIndex 1, inorderRight);

相关新闻

罗克韦尔 AB(伟肯)AB33I 风机驱动板卡

罗克韦尔 AB(伟肯)AB33I 风机驱动板卡

一、板卡基础概述1.1 型号溯源与适配机型AB33I 行业俗称,原厂本体为 VACON 伟肯399I(物料号 PC00299H)风机驱动电源板,罗克韦尔收购伟肯之后,大批量搭载在 AB 大功率变频器内部,现场运维习惯性简称为 AB33I…

2026/8/9 2:22:47 阅读更多 →
如何快速提升日本麻将水平?mahjong-helper智能助手为你提供专业指导

如何快速提升日本麻将水平?mahjong-helper智能助手为你提供专业指导

如何快速提升日本麻将水平?mahjong-helper智能助手为你提供专业指导 【免费下载链接】mahjong-helper 日本麻将助手:牌效防守记牌(支持雀魂、天凤) 项目地址: https://gitcode.com/gh_mirrors/ma/mahjong-helper 你是否在雀…

2026/8/9 2:22:47 阅读更多 →
SV学习记录(二)

SV学习记录(二)

目录 2.1 内建数据类型 2.2 定宽数组 聚合运算 位下标和数组下标 合并数组 合并or非合并? 2.3 动态数组 2.4 队列 2.5 关联数组 2.6 链表 2.7 数组的方法(array methods) 数组的缩减方法 数组定位方法 数组的排序 使用数组定位…

2026/8/9 2:22:47 阅读更多 →

最新新闻

2026年浪潮最火的三款服务器怎么选?DeepSeek V4部署需要什么配置?全国优秀代理商名单+区域采购指南

2026年浪潮最火的三款服务器怎么选?DeepSeek V4部署需要什么配置?全国优秀代理商名单+区域采购指南

目录 2026年浪潮最火的三款服务器怎么选?DeepSeek V4部署需要什么配置?全国优秀代理商名单区域采购指南开篇:一个采购总监的72小时一、浪潮2026年三款主力服务器:到底谁最火? 1. NF5280G7:通用算力王者&…

2026/8/9 3:17:12 阅读更多 →
告别唯代码论:构建多元化程序员考核体系,提升团队效能与创新

告别唯代码论:构建多元化程序员考核体系,提升团队效能与创新

1. 从“码力崇拜”到价值回归:为什么我们需要重新定义程序员考核在技术圈待了十几年,我见过太多关于程序员的“刻板印象”和“单一评价”。最典型的就是“唯代码论”——一个程序员的价值,似乎完全等同于他每天提交的代码行数、修复的Bug数量…

2026/8/9 3:17:12 阅读更多 →
基于RocketMQ LiteTopic构建AI推理服务精细化流量治理方案

基于RocketMQ LiteTopic构建AI推理服务精细化流量治理方案

1. 从“一刀切”到“千人千面”:AI推理流量治理的必然演进最近在搞一个AI推理服务的线上稳定性保障,遇到了一个挺典型的问题。我们的服务接入了好几个大模型,有处理实时对话的,有跑文生图的,还有做代码生成的。起初流量…

2026/8/9 3:17:12 阅读更多 →
Vue大文件切片上传实现与优化方案

Vue大文件切片上传实现与优化方案

1. 大文件上传的痛点与解决方案 前端开发中处理大文件上传一直是个令人头疼的问题。我最近在一个视频管理后台项目中就遇到了这个挑战 - 用户需要上传平均2GB以上的高清视频素材,传统的文件上传方式完全无法满足需求。 传统表单上传的局限性非常明显:首…

2026/8/9 3:17:12 阅读更多 →
Unity3D第一人称迷宫游戏开发:从场景搭建到性能优化的全流程实战

Unity3D第一人称迷宫游戏开发:从场景搭建到性能优化的全流程实战

1. 项目概述与核心价值最近在社区里看到不少朋友对Unity3D的第一人称视角小游戏开发感兴趣,尤其是迷宫探索这类经典玩法。作为一个从Unity 4.x版本就开始折腾的老玩家,我决定把当年踩过的坑、总结的经验,结合现在更成熟的开发流程&#xff0c…

2026/8/9 3:17:11 阅读更多 →
程序员想转AI的话,可以看下FDE这个新岗位。

程序员想转AI的话,可以看下FDE这个新岗位。

硅谷不少公司都在高薪招聘 FDE,比如 OpenAI、Anthropic、Scale AI,感觉这是程序员的一条新出路。 有人可能觉得,FDE 就是换汤不换药,和之前的售前工程师、解决方案架构师或者技术支持没什么区别。 其实不是。今天我想写一篇文章&a…

2026/8/9 3:16:11 阅读更多 →

日新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/8 17:02:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/9 0:45:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/8 17:02:44 阅读更多 →