当前位置: 首页 > 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, inorder: List[int], postorder: List[int]) -> Optional[TreeNode]:def construct(inorder,postorder):if not postorder:return Nonevalue=postorder[-1] #根节点root=TreeNode(value)Index=inorder.index(value)inorder_left=inorder[:Index]inorder_right=inorder[Index+1:]postorder_left=postorder[:len(inorder_left)]postorder_right=postorder[len(inorder_left):len(postorder)-1]root.left=construct(inorder_left,postorder_left)root.right=construct(inorder_right,postorder_right)return rootreturn construct(inorder,postorder)
http://www.lryc.cn/news/586903.html

相关文章:

  • 手写std::optional:告别空指针的痛苦
  • HTTP与HTTPS详解
  • 20250713 保存 PGM / PPM 图片 C++
  • COZE token刷新
  • 一文读懂现代卷积神经网络—使用块的网络(VGG)
  • 2025江苏省信息安全管理与评估赛项二三阶段任务书
  • 改进后的 OpenCV 5.x + GStreamer + Python 3.12 编译流程(适用于 Orange Pi / ARM64)
  • 3.7 ASPICE的问题解决与改进过程
  • Linux-网络管理
  • iTestin 自动化录制工具
  • Kimi K2深度解析:开源万亿参数大模型,复杂场景能力强悍,为AI Agent而生!
  • Vision Kit之文档扫描
  • 【PyMuPDF】PDF图片处理过程内存优化分析
  • 论文Review 3DGSSLAM GauS-SLAM: Dense RGB-D SLAM with Gaussian Surfels
  • kettle从入门到精通 第102课 ETL之kettle xxl-job调度kettle的两种方式
  • 归并排序递归法和非递归法的简单简单介绍
  • 三种网络类型
  • X00211-基于残差edge-graph注意力机制的深度强化学习优化车辆路径问题
  • RedisJSON 技术揭秘(五)`JSON.ARRPOP` 原子弹出 修改数组的终极手段
  • 基于Java Web的销售管理系统设计系统
  • 操作系统--用户态和内核态
  • MongoDB对接SpringBoot【大数据存储】
  • ref 和 reactive
  • https交互原理
  • [Subtitle Edit] 字幕格式处理 | .Net依赖管理(NuGet)
  • Python----OpenCV(图像分割——彩色图像分割,GrabCut算法分割图像)
  • LeetCode--44.通配符匹配
  • Mybatis 两级缓存可能导致的问题
  • Java4种设计模式详解(单例模式、工厂模式、适配器模式、代理模式)
  • 笔记/sklearn中的数据划分方法