news 2026/5/12 21:54:57

LeetCode(python)——105.从前序与中序遍历序列构造二叉树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode(python)——105.从前序与中序遍历序列构造二叉树

题目

给定两个整数数组preorderinorder,其中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 <= 3000
  • inorder.length == preorder.length
  • -3000 <= preorder[i], inorder[i] <= 3000
  • preorderinorder无重复元素
  • inorder均出现在preorder
  • preorder保证为二叉树的前序遍历序列
  • inorder保证为二叉树的中序遍历序列

思路

1.前序序列——找根

2.中序序列——划分左右子树

3.递归遍历

具体步骤:
(1)递归结束条件:如果前序or中序序列为空,说明已遍历结束,return None

(2)创建根节点:取前序序列的第一个元素

(3)分左右子树:

  • 在inorder中找根节点的索引值
  • 根据这个索引值将preorder和inorder拆分成左右两个子树
  • left_in = inorder[:root_index],right_in = inorder[root_index + 1:]
  • left_pre = preorder[1:len(root_index) + 1],right_pre = preorder[len(root_index)+1,:]
  • 递归处理左右子树

代码

# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]: if not preorder or not inorder: # 如果序列为空,return None return None root_val = preorder[0] # 取根节点 root = TreeNode(root_val) root_idx = inorder.index(root_val) # 在中序中找根节点索引 left_in = inorder[:root_idx] # 根据根节点索引划分左右子树 right_in = inorder[root_idx + 1:] left_pre = preorder[1: len(left_in) + 1] right_pre = preorder[len(left_in) + 1:] root.left = self.buildTree(left_pre, left_in) # 递归处理左右子树 root.right = self.buildTree(right_pre, right_in) return root
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 19:47:33

LobeChat是否具备内存泄漏检测?长期运行稳定性评估

LobeChat 是否具备内存泄漏检测&#xff1f;长期运行稳定性评估 在构建企业级 AI 助手门户的今天&#xff0c;一个看似简单的聊天界面背后&#xff0c;往往隐藏着复杂的性能挑战。LobeChat 作为当前最受欢迎的开源 ChatGPT 替代前端之一&#xff0c;凭借其现代化的设计和灵活的…

作者头像 李华
网站建设 2026/5/9 14:17:53

提示工程实战指南:5大维度提升Gemini模型输出质量

提示工程实战指南&#xff1a;5大维度提升Gemini模型输出质量 【免费下载链接】generative-ai Sample code and notebooks for Generative AI on Google Cloud 项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai 你是否经常遇到Gemini模型输出不稳定、不…

作者头像 李华
网站建设 2026/5/12 11:27:24

研发团队许可抢占:错峰使用与优先级分配策略解析

研发团队许可抢占&#xff1a;错峰使用与优先级分配策略解析作为一名长期在技术团队中负责系统规划与资源管理的工程师&#xff0c;我经常会遇到这样的问题&#xff1a;当多个研发团队同时申请使用相同资源时&#xff0c;如何高效、公平地分配&#xff0c;以避免资源冲突、效率…

作者头像 李华
网站建设 2026/4/25 6:49:44

WAN2.2-14B-Rapid-AllInOne:重新定义多模态视频创作效率的智能引擎

在AI视频生成技术快速迭代的当下&#xff0c;WAN2.2-14B-Rapid-AllInOne以其独特的"一体化"设计理念&#xff0c;为内容创作者带来了前所未有的操作便利性。这款融合了WAN 2.2核心架构与多种优化技术的创新方案&#xff0c;正在改写传统视频制作的工作流程。 【免费下…

作者头像 李华
网站建设 2026/5/11 11:47:02

VibeVoice语音合成:从语义理解到声波生成的认知跃迁

在语音合成技术演进的十字路口&#xff0c;我们见证了从机械式波形拼接向智能语义驱动的范式转变。微软研究院开源的VibeVoice框架&#xff0c;正是这一变革的集大成者——它不再满足于简单的文本转语音功能&#xff0c;而是构建了一个能够理解语言内涵、感知情感色彩、生成自然…

作者头像 李华
网站建设 2026/5/10 4:15:40

SVM分类在高光谱遥感图像分类与预测中的应用

一、方法原理与技术框架核心原理 支持向量机&#xff08;SVM&#xff09;&#xff1a;通过构建超平面实现高维数据分类&#xff0c;适用于小样本、非线性问题。 高光谱数据特性&#xff1a;高维&#xff08;数百至数千波段&#xff09;、强相关性、小样本&#xff08;训练样本占…

作者头像 李华