当前位置: 首页 > 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.lryc.cn/news/587297.html

相关文章:

  • python赤道上空的大气环流剖面图(纬向-高度剖面)
  • Node.js 聊天内容加密解密实战教程(含缓存密钥优化)
  • 【elementUI踩坑记录】解决 el-table 固定列 el-table__fixed 导致部分滚动条无法拖动的问题
  • QT控件命名简写
  • Burp suite的下载安装基础用法(密码喷洒,密码爆破)
  • Linux 系统——管理 MySQL
  • 超市管理系统
  • 问题记录:Fastjson序列化-空值字段处理
  • 数据结构 Map和Set
  • 零基础完全理解视觉语言模型(VLM):从理论到代码实践
  • ArkUI Inspector工具用法全解析
  • Redis 命令总结
  • react中为啥使用剪头函数
  • Redis技术笔记-从三大缓存问题到高可用集群落地实战
  • 【SpringBoot】注册条件+自动配置原理+自定义starter
  • 通信网络编程5.0——JAVA
  • 【STM32实践篇】:F407 时钟系统
  • [2025CVPR]GNN-ViTCap:用于病理图像分类与描述模型
  • XML实体扩展注入与防御方案
  • [Linux 入门] Linux 引导过程、系统管理与故障处理全解析
  • 强化学习 (11)随机近似
  • opencv python 基本操作
  • WEB渗透
  • 利用DeepSeek证明立体几何题目
  • Maven项目没有Maven工具,IDEA没有识别到该项目是Maven项目怎么办?
  • Prometheus Operator:Kubernetes 监控自动化实践
  • 05.判断日期是工作日还是周末
  • 学习python调用WebApi的基本用法(2)
  • 反射内存卡的使用
  • 进制转换结合tk可视化窗口