news 2026/5/5 20:15:28

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/2 22:15:32

跨国企业合规痛点:多地区法规差异下的许可统一管理

跨国企业合规痛点&#xff1a;多地区法规差异下的许可统一管理在全球化加速发展的今天&#xff0c;越来越多的企业选择拓展国际市场&#xff0c;走向海外。跨国经营并非一条坦途&#xff0c;在许可合规管理方面&#xff0c;企业常常面临多地区法规差异带来的复杂问题。一个企业…

作者头像 李华
网站建设 2026/4/21 9:25:48

面向AI系统的数据隐私保护测试框架设计与实践

随着《个人信息保护法》和《数据安全法》的深入实施&#xff0c;AI系统数据隐私保护已成为测试工作的核心议题。2025年&#xff0c;全球数据泄露事件同比激增67%&#xff0c;其中AI模型训练与推理环节占比达41%。本文提出覆盖全生命周期的测试方案&#xff0c;帮助测试团队构建…

作者头像 李华
网站建设 2026/4/29 9:27:54

移动端自动化测试:工具选择与实战技巧深度解析

一、移动端自动化测试现状与挑战随着智能设备渗透率持续攀升&#xff0c;移动应用功能复杂度呈指数级增长。截至2025年&#xff0c;全球移动用户日均使用时长突破4小时&#xff0c;这对测试工作提出更高要求。传统手工测试面临三大瓶颈&#xff1a;设备碎片化&#xff08;需覆盖…

作者头像 李华
网站建设 2026/5/2 21:12:59

升级竞价思维:从被动跟随到主动布局的策略进化

在亚马逊广告投放的竞技场中&#xff0c;“系统建议出价”曾像海妖的歌声一般&#xff0c;诱惑着无数卖家踏入高成本低回报的迷雾&#xff0c;直到越来越多的人发现&#xff0c;这一“友好”的工具背后&#xff0c;潜藏着一套精密的算法逻辑——它并非以卖家的利润最大化为目的…

作者头像 李华
网站建设 2026/5/3 18:29:31

汽车行业最严重漏洞:20家知名车企API暴露车主个人信息

汽车行业最严重漏洞&#xff1a;20家知名车企API暴露车主个人信息 近日安全研究人员Sam Curry披露了近20家知名汽车制造商在线服务中的API安全漏洞&#xff0c;这些漏洞可能允许黑客执行恶意活动&#xff0c;包括从解锁、启动、跟踪汽车到窃取客户个人信息。这可能是汽车行业迄…

作者头像 李华
网站建设 2026/5/2 3:38:14

SVN 某个用户 进项目需要常常输入密码

用户输入密码后 大约10多分钟还需要再输入密码&#xff1a; 1. Linux 首先 我查看了 该用户确实有权限 其次开始操作&#xff0c;让该用户进入/home/xx 下 删除隐藏文件 .subversion/ 再开始 操作 svn co 或 svn ls 触发 输入密码的操作&#xff0c;即可&#xff0c;可…

作者头像 李华