当前位置: 首页 > 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.dtcms.com/a/277511.html

相关文章:

  • Maven项目没有Maven工具,IDEA没有识别到该项目是Maven项目怎么办?
  • html案例:编写一个用于发布CSDN文章时,生成有关缩略图
  • 【拓扑排序+dfs】P2661 [NOIP 2015 提高组] 信息传递
  • 线下门店快速线上化销售四步方案
  • 在i.MX8MP上如何使能BlueZ A2DP Source
  • 如何设计高并发架构?深入了解高并发架构设计的最佳实践
  • Nature子刊 |HERGAST:揭示超大规模空间转录组数据中的精细空间结构并放大基因表达信号
  • DETRs与协同混合作业训练之CO-DETR论文阅读
  • Pandas 的 Index 与 SQL Index 的对比
  • Flask中的路由尾随斜杠(/)
  • SQL140 未完成率top50%用户近三个月答卷情况
  • react中为啥使用剪头函数
  • (nice!!!)(LeetCode 面试经典 150 题 ) 30. 串联所有单词的子串 (哈希表+字符串+滑动窗口)
  • win10 离线安装wsl
  • 论文翻译:Falcon: A Remote Sensing Vision-Language Foundation Model
  • 26-计组-数据通路
  • 楼宇自动化:Modbus 在暖通空调(HVAC)中的节能控制(一)
  • Linux驱动开发1:设备驱动模块加载与卸载
  • java+vue+SpringBoo中小型制造企业质量管理系统(程序+数据库+报告+部署教程+答辩指导)
  • 查看Linux服务器显卡使用情况的详细教程
  • win11添加无线显示器(两个笔记本实现双屏)
  • 昇腾FAQ-A08-工具链相关
  • 小架构step系列13:测试用例的加载
  • 线性代数学习笔记
  • 求解线性规划模型最优解
  • Java行为型模式---观察者模式
  • AI基础设施展望
  • 《Mirage:首款基于实时世界模型的AI原生UGC游戏引擎,开启“边玩边生成”的游戏新时代》
  • Python实现小红书悬停框效果详解
  • 极矢量与轴矢量