JAVA练习315- 从前序与中序遍历序列构造二叉树
题目概览给定两个整数数组preorder和inorder其中preorder是二叉树的先序遍历inorder是同一棵树的中序遍历请构造二叉树并返回其根节点。示例 1:输入:preorder [3,9,20,15,7], inorder [9,3,15,20,7]输出:[3,9,20,null,null,15,7]示例 2:输入:preorder [-1], inorder [-1]输出:[-1]提示:1 preorder.length 3000inorder.length preorder.length-3000 preorder[i], inorder[i] 3000preorder和inorder均无重复元素inorder均出现在preorderpreorder保证为二叉树的前序遍历序列inorder保证为二叉树的中序遍历序列来源105. 从前序与中序遍历序列构造二叉树 - 力扣LeetCode解题分析方法模拟前序是根 - 左 - 右中序是 左 - 根 - 右。我们可以根据前序数组第一个元素拿到根节点然后再到中序数组中进行拆分我们定义前序数组的范围为 [ pi, pj ]中序数组的范围为 [ ii, ij ]中序数组中根节点的索引为 root那么可以得到每个子数组的范围中序子数组 - 左 [ ii, root - 1 ]中序子数组 - 右 [ root 1, ij ]前序子数组 - 左 [ pi 1, pi root - ii ]前序子数组 - 右 [ pi 1 root - ii, pj ]将这个范围作为参数继续往下传然后重复拿根节点拆分的操作即可直到数组为空或只有一个元素停止。时间复杂度O(n)空间复杂度O(n)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { int n preorder.length; if (n 0) { return null; } return buildTree(preorder, inorder, 0, n - 1, 0, n - 1); } public TreeNode buildTree(int[] preorder, int[] inorder, int pi, int pj, int ii, int ij) { if (pi pj || ii ij) { return null; } TreeNode node new TreeNode(preorder[pi]); if (pi pj || ii ij) { return node; } int root preorder[pi]; int rootIndex ii; for (int i ii; i ij; i) { if (root inorder[i]) { rootIndex i; } } node.left buildTree(preorder, inorder, pi 1, pi rootIndex - ii, ii, rootIndex - 1); node.right buildTree(preorder, inorder, pi rootIndex - ii 1, pj, rootIndex 1, ij); return node; } }

相关新闻

JAVA练习313- 二叉树的右视图

JAVA练习313- 二叉树的右视图

题目概览 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入:root [1,2,3,null,5,null,4] 输出:[1,3,4] 解释: 示例…

2026/10/11 15:57:50 阅读更多 →
Python agent2agent-server 包完全指南:安装、语法、案例与常见错误

Python agent2agent-server 包完全指南:安装、语法、案例与常见错误

1. 引言随着 AI Agent 技术的快速发展,多智能体协作已成为构建复杂自动化系统的关键方向。agent2agent-server 是一个轻量级 Python 包,旨在简化不同 AI Agent 之间的通信与协作。本文将详细介绍该包的安装、核心语法、参数配置,并通过 8 个实…

2026/10/11 10:52:30 阅读更多 →
恶意软件分析师必备:5个Unipacker高级技巧解密加壳样本

恶意软件分析师必备:5个Unipacker高级技巧解密加壳样本

恶意软件分析师必备:5个Unipacker高级技巧解密加壳样本 【免费下载链接】unipacker Automatic and platform-independent unpacker for Windows binaries based on emulation 项目地址: https://gitcode.com/gh_mirrors/un/unipacker 你是否曾经面对一个加壳…

2026/10/9 7:38:19 阅读更多 →

最新新闻

风光储互补微电网Simulink仿真建模全流程与控制器调参实战

风光储互补微电网Simulink仿真建模全流程与控制器调参实战

搞风光储互补微电网仿真这件事,说难不难,说简单也真不简单。我前前后后搭过好几版模型,从最开始只有一个光伏Boost加个简单蓄电池,到最后完整的“光伏风电储能负荷”能并网能离网还能平滑切换,中间踩过的坑比想象中多得…

2026/10/11 23:16:13 阅读更多 →
Django宿舍管理系统开发实战:从数据模型到Admin后台

Django宿舍管理系统开发实战:从数据模型到Admin后台

1. 项目整体拆解与业务设计思路做宿舍管理系统这类项目,最怕的就是上来就对着IDE写代码。我见过不少同学拿到“基于Django的学生宿舍管理系统”这个题目,第一反应是去搜代码、下源码,结果要么跑不起来,要么跟自己的需求天差地别。…

2026/10/11 23:16:13 阅读更多 →
别再急着上向量数据库:PostgreSQL+pgvector+BM25混合检索实践

别再急着上向量数据库:PostgreSQL+pgvector+BM25混合检索实践

去年我们团队给 RAG 系统选型时,差点就按主流路径下单了一个专用向量数据库。年费报上来那一刻,我盯着预算表沉默了:当时的切片总量只有几十万条,真正在服务的业务也就一条产品线,买专用向量库的预算足够我们把主库 Po…

2026/10/11 23:16:13 阅读更多 →
为什么 treehouse 没有守护进程:worktree 管理工具的安全优先与无状态设计指南

为什么 treehouse 没有守护进程:worktree 管理工具的安全优先与无状态设计指南

【免费下载链接】treehouse Manage worktrees without managing worktrees. 项目地址: https://gitcode.com/gh_mirrors/treehou/treehouse 点击查看 免费下载 treehouse 是一款面向 AI 编码代理的 Git worktree 池管理工具,它用"零守护进程 无状…

2026/10/11 23:16:13 阅读更多 →
PS5硬件扩展边界全解析:接口、协议与物理限制

PS5硬件扩展边界全解析:接口、协议与物理限制

项目标题“AnyPS5”目前在公开网络中无权威技术文档、官方产品发布或主流科技媒体报导支撑,亦未见于索尼互动娱乐(Sony Interactive Entertainment)任何已知产品线、开发代号或公开技术白皮书。经多平台语义检索与行业术语交叉验证&#xff0…

2026/10/11 23:15:10 阅读更多 →
YOLOv8+PaddleOCR车牌识别全链路工程实践

YOLOv8+PaddleOCR车牌识别全链路工程实践

简介:本资源是一套面向本科毕业设计与人工智能课程实践的智能车牌识别系统完整实现方案,聚焦图像识别与机器学习在智能交通场景中的落地应用。系统基于YOLOv8目标检测与PaddleOCR文字识别双引擎协同架构,覆盖车牌定位、字符分割、OCR识别全流…

2026/10/11 23:15:08 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →