当前位置: 首页 > news >正文

面试150 从前序与中序遍历构造二叉树

在这里插入图片描述

思路

本题要求根据前序遍历和中序遍历的结果构建一棵二叉树。首先,根据前序遍历的特性,其第一个元素一定是整棵树的根节点。我们可以通过该根节点的值,在中序遍历数组中找到对应的位置。这个位置将中序遍历数组分为左右两部分:左侧为左子树的中序遍历,右侧为右子树的中序遍历。
接下来,根据左子树中序遍历的长度,可以确定前序遍历中左子树和右子树对应的部分。然后对左右子树分别递归执行同样的构建过程,最终即可还原整棵二叉树。

# 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]:def construct(pre,ino):if not pre:return Nonevalue=pre[0]root=TreeNode(value)#根节点Index=ino.index(value) #找出根节点在中序中数组的位置ino_left=ino[:Index]ino_right=ino[Index+1:]pre_left=pre[1:1+len(ino_left)]pre_right=pre[1+len(ino_left):]root.left=construct(pre_left,ino_left)root.right=construct(pre_right,ino_right)return rootreturn construct(preorder,inorder)
http://www.dtcms.com/a/277440.html

相关文章:

  • STM32-第五节-TIM定时器-1(定时器中断)
  • Clojure和Golang中的Channel有什么异同(TBC)
  • 构建应用内智能:衡石嵌入式BI如何打造“指标中台”驱动的场景化分析
  • Python文件路径操作全面指南:从基础到高级应用
  • 深入理解数据库连接池:原理、实现与Druid实战
  • MCU中的系统控制器(System Controller)是什么?
  • Spring Boot + MyBatis 实现用户登录功能详解(基础)
  • PaperPel
  • Oracle SQL - 使用行转列PIVOT减少表重复扫描(实例)
  • AI驱动的软件工程(上):人机协同的设计与建模
  • 【读书笔记】《C++ Software Design》第六章深入剖析 Adapter、Observer 和 CRTP 模式
  • 实现“micro 关键字搜索全覆盖商品”并通过 API 接口提供实时数据(一个方法)
  • fatal: active `post-checkout` hook found during `git clone`
  • mapstruct与lombok冲突原因及解决方案
  • 【Linux 学习指南】网络基础概念(一):从协议到分层,看透计算机通信的底层逻辑
  • LeetCode|Day9|976. 三角形的最大周长|Python刷题笔记
  • 通过反射,提取 Cat 类 泛型 父类 接口 属性 的具体类型参数
  • 【一起来学AI大模型】部署优化推理加速:TensorRT-LLM
  • 华为交换机 undo negotiation auto功能(华为交换机端口接光纤两端起不来)
  • Jvm优化高手-笔记
  • Cursor精准上下文指定
  • 印度纱丽变革:传统靛蓝工艺在无性别斗篷中的延续
  • TensorFlow深度学习实战(24)——变分自编码器详解与实现
  • 基于Springboot+UniApp+Ai实现模拟面试小工具三:后端项目基础框架搭建上
  • AI 助力:如何批量提取 Word 表格字段并导出至 Excel
  • React强大且灵活hooks库——ahooks入门实践之生命周期类hook(lifecycle)详解
  • vite---环境变量和模式配置(.env 文件)
  • 【论文阅读】Think Only When You Need with Large Hybrid-Reasoning Models
  • Linux进程状态实战指南:转换关系、监控命令与状态解析
  • 【Linux | 网络】应用层(HTTP)