news 2026/5/1 6:23:09

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/4/30 13:58:04

DeepSeek-Prover-V2终极指南:671B参数定理证明AI的完整教程

DeepSeek-Prover-V2终极指南&#xff1a;671B参数定理证明AI的完整教程 【免费下载链接】DeepSeek-Prover-V2-671B 项目地址: https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-Prover-V2-671B 在人工智能与数学定理证明的交叉领域&#xff0c;DeepSeek-Prover…

作者头像 李华
网站建设 2026/5/1 9:25:29

【网安科普】网安巨头Palo Alto:2026年网络安全趋势预测

【网安科普】网安巨头Palo Alto&#xff1a;2026年网络安全趋势预测 Palo Alto预言在AI经济下&#xff0c;网络安全将迎来六大新格局&#xff1a; 针对从高管到AI代理的身份伪造欺骗、AI代理变身新内部威胁、如何解决AI数据可信问题、如何应对AI风险的新法律责任、量子倒计时日…

作者头像 李华
网站建设 2026/5/1 8:04:12

CachyOS 内核重装修复流程(更新后启动失败)

准备 使用 CachyOS Live USB 启动进入桌面/终端连接到网络打开终端开始操作1.确认分区&#xff08;找出根分区和 EFI 分区&#xff09; 执行查看硬盘与分区文件系统&#xff1a; lsblk -f根据 lsblk 结果&#xff0c;确认你真正的 Linux 系统分区&#xff08;示例&#xff09;&…

作者头像 李华
网站建设 2026/5/1 7:11:38

12、DB2数据库备份、恢复与维护全解析

DB2数据库备份、恢复与维护全解析 1. 数据库备份与恢复 当多个备份存储在同一路径时,文件名末尾的时间戳可用于区分备份镜像。恢复命令(RESTORE)能利用该时间戳从特定备份进行恢复。 1.1 数据库恢复类型 崩溃或重启恢复 :假设在运行重要事务到DB2数据库时,突然停电或…

作者头像 李华