恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

力扣105-从前序与中序遍历序列构造二叉树

  • 首页
  • 资讯中心
  • /
  • 力扣105-从前序与中序遍历序列构造二叉树

相关资讯

TegraRcmGUI深度指南:3大技术挑战与高效解决方案 2026/8/2 5:06:01
Windows 10下Gpg4win 4.3.1安装与加密邮件实战指南 2026/8/2 18:16:30
审批效率提升300%的关键路径,深度拆解金融/制造/政务三大行业AI流转架构差异 2026/8/2 5:07:25

最新资讯

沃尔沃EX60深度解析:车载互联与AI如何重塑智能汽车
ChatGPT:OpenAI大型语言模型助手的自我介绍
Penman-Monteith简化公式怎么选?从数据缺失到本地化校准的完整指南
SpringBoot宠物网站毕设:从功能设计到部署调试全解析
Python函数进阶:参数传递、闭包与装饰器实战指南
PINOC MCP 实战:让 AI 智能体直接生成角色动画

今日推荐

麒麟Kylin V10 SP3服务器安装实战:硬件兼容、启动优化与生产级分区
华为手机助手导致Windows内存完整性关闭的根因与修复
图书馆图书借阅管理系统:JSP+Servlet+MySQL源码部署与答辩指南

本周热门

BrewUI:给Homebrew套上图形界面,让macOS软件包管理更简单
BrewUI:让Homebrew包管理变得可视化与高效
公式与文本对齐全攻略:从Word到LaTeX的实用技巧

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

力扣105-从前序与中序遍历序列构造二叉树

发布时间:2026/9/26 7:13:42
力扣105-从前序与中序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树 - 力扣LeetCode给定两个整数数组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保证为二叉树的中序遍历序列方法一递归本题的一个关键信息是两个序列中均没有重复元素前序遍历的第一个元素必然是根节点因此我们可以在中序遍历序列中定位到根节点的位置。而中序遍历的结果必然是左子树的中序遍历序列、根节点、右子树的中序遍历序列又根据中序遍历与前序遍历的序列长度相同所以可得左右子树的前序/中序遍历序列使用递归构造出左子树和右子树再把两棵子树的根节点接到整棵树根节点的左右两边即可注意到一个问题每次递归都要先根据前序遍历序列找到根节点然后去定位其在中序遍历序列中的位置这个过程是 O(n) 的我们可以在开始构造之前用一个哈希表记录一个节点在中序遍历序列中的出现位置。即key 是这个节点的值因为唯一value 是这个节点在中序遍历序列中出现的位置。这样一来只需要遍历一趟中序遍历序列后续的递归中都只需要 O(1) 的时间对根节点进行定位class Solution: def buildTree(self, preorder: List[int], inorder: List[int]) - Optional[TreeNode]: def func(preorder_left: int, preorder_right: int, inorder_left: int, inorder_right: int): # 递归终止条件 if preorder_left preorder_right: return None # 前序遍历的第一个节点就是根节点 root_pre preorder_left # 构建根节点 root TreeNode(preorder[root_pre]) # 在中序遍历中定位根节点下标 inorder_root index[preorder[root_pre]] # 左子树中根节点数目 left_subTree_size inorder_root - inorder_left # 递归地构造左子树左子树的前序遍历序列是 preorder 从下标1开始往后找 left_subTree_size 个数目构成的序列 root.left func(preorder_left 1, preorder_left left_subTree_size, inorder_left, inorder_root - 1) # 右子树同理 root.right func(preorder_left left_subTree_size 1, preorder_right, inorder_root 1, inorder_right) return root n len(preorder) index {element: i for i, element in enumerate(inorder)} return func(0, n - 1, 0, n - 1)

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号