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/7/19 15:15:09 阅读更多 →
Python agent2agent-server 包完全指南:安装、语法、案例与常见错误

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

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

2026/7/19 15:15:09 阅读更多 →
恶意软件分析师必备: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/7/19 15:15:09 阅读更多 →

最新新闻

csproj,C# 也能“单文件即运行“

csproj,C# 也能“单文件即运行“

这种"仪式感",在 .NET 10 中终于成为历史。 .NET 10 引入了一个重磅新特性——File-Based Apps(文件级应用)。它允许你仅用一个 .cs 文件,无需任何 .csproj 项目文件,就能直接编译、运行、甚至发布为独立可执…

2026/7/19 22:30:55 阅读更多 →
【JVM调优实战】36-云原生时代的JVM

【JVM调优实战】36-云原生时代的JVM

云原生时代的 JVM:GraalVM Native Image 与冷启动优化 本文是《JVM调优实战》专栏第 36 讲(终章)。 引言 如果你在 2010 年对一位架构师说"我们的微服务需要在 100 毫秒内完成启动",他大概率会认为你疯了。在那个年代,JVM 启动耗用几秒钟是完全可以接受的——服…

2026/7/19 22:30:55 阅读更多 →
3个步骤,让Wand游戏修改器变身专业版:开源增强工具完全指南

3个步骤,让Wand游戏修改器变身专业版:开源增强工具完全指南

3个步骤,让Wand游戏修改器变身专业版:开源增强工具完全指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 你是否曾经在玩…

2026/7/19 22:30:55 阅读更多 →
Markmap:将Markdown文档转化为动态思维导图的深度解析

Markmap:将Markdown文档转化为动态思维导图的深度解析

Markmap:将Markdown文档转化为动态思维导图的深度解析 【免费下载链接】markmap Build mindmaps with plain text 项目地址: https://gitcode.com/gh_mirrors/ma/markmap 在信息爆炸的时代,如何高效组织和可视化复杂知识体系成为技术团队面临的核…

2026/7/19 22:30:55 阅读更多 →
终极免费指南:5分钟掌握中国大学MOOC离线下载完整方案

终极免费指南:5分钟掌握中国大学MOOC离线下载完整方案

终极免费指南:5分钟掌握中国大学MOOC离线下载完整方案 【免费下载链接】MoocDownloader An MOOC downloader implemented by .NET. 一枚由 .NET 实现的 MOOC 下载器. 项目地址: https://gitcode.com/gh_mirrors/mo/MoocDownloader 你是否曾因为网络不稳定而错…

2026/7/19 22:29:55 阅读更多 →
AI 视频制作教程 2026:脚本→分镜→生成→剪辑全流程与工具清单

AI 视频制作教程 2026:脚本→分镜→生成→剪辑全流程与工具清单

AI 做视频早就不难了。难的是把它做成一条稳定、可重复的生产线。只丢一句"帮我生成一条宣传片",通常会换来几个漂亮但接不上的镜头:人物变脸、产品漂移、字幕乱码、节奏发朋友圈都嫌尴尬(拾光网)。 我帮一个做护肤品的…

2026/7/19 22:29:55 阅读更多 →

日新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

月新闻