来源:Python中,二叉树先序、中序、后序相互求法_DreamReverse的博客-CSDN博客_前序后序求中序python

第一步:输入中序:['c','b','d','a','f','e','g'];后序:['c','d','b','f','g','e','a'],判断后序列表是否为空?为空则结束二叉树的判断,否则从后序中获取根节点的值,并在中序中获取根节点的索引。将根节点后左孩子和右孩子分别存储在二叉树变量bt中。根节点可以直接存储,但是孩子可能是树不能直接存储需要进行判断,如果是树则需要进行树的解码,使用递归的方式进行。根节点1:a;左孩子1的中序是['c', 'b', 'd'],后序是['c', 'd', 'b'];右孩子1的中序是['f','e','g'],后序是['f','g','e']。输出bt1={"data":"a","left":待解析,"right":待解析}

第二步:对左孩子1进行二叉树的解析,根据中序和后序确定左孩子1的根节点和左右孩子。先判断左孩子1的后序是否为空,如果空则停止解析否则继续解析。同样的步骤,获取根节点以及左右孩子。根节点2:b;左孩子2:["c"],右孩子2:["d"]。输出bt2={"data":"b","left":待解析,"right":待解析}

第三步:然后继续进行解析左孩子2,判断后序不为空,其根节点:c,左右孩子为空返回。输出bt3={"data":"c","left":"","right":""}

第四步:解析右孩子2,根节点为d,左右孩子为空返回。输出bt4={"data":"d","left":"","right":""},到此左孩子1已经被解析完成输出bt1={"data":"a","left":{"data":"b","left":"c","right":"d"},"right":待解析}

以同样的步骤解析右孩子,将会得到bt1={"data":"a","left":{"data":"b","left":"c","right":"d"},"right":{"data":"e","left":"f","right":"g"}}

# This is a sample Python script.# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
from typing import Listimport osclass BinaryTree(object):def __init__(self, data, left = None, right = None):self.data = dataself.left = leftself.right = rightdef binary(last,center):if not last:returndate = last[-1];#获取根节点index = center.index(date)#获取中序中根节点的索引bt = BinaryTree(date)#生成储存变量,根节点,左树和右树print("last[:index]",last[:index])print("center[:index]", center[:index])bt.left = binary(last[:index],center[:index])print("last[index:-1]", last[index:-1])print("center[index+1:]", center[index+1:])bt.right = binary(last[index:-1],center[index+1:])return btdef showBinary(bt):if bt == None:returnprint(bt.data,end = " ")showBinary(bt.left)showBinary(bt.right)def main():center = ['c','b','d','a','f','e','g']last = ['c','d','b','f','g','e','a']bt = binary(last,center)showBinary(bt)if __name__ == '__main__':main()

根据中序和后序构造二叉树相关推荐

  1. 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...

  2. 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)

    引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...

  3. leetcode 106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树思考分析

    目录 1.106题目 2.参考思路:递归切割数组 3.105题目 4.同样思路的代码 1.106题目 2.参考思路:递归切割数组 代码参考:公众号:代码随想录 后序数组+中序数组 以 后序数组(左右中 ...

  4. java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...

    前言 二叉树各种花里胡哨的算法题真的把我搞晕了,今天特地整理出一类有关二叉树的算法题,希望能帮助阅读到此文章的人,今后不再受此类题型的困扰. 一.题目类型 已知二叉树的两种遍历序列,请根据该序列构建二 ...

  5. 【中序、后序遍历序列】【前序、中序遍历序列】构造二叉树

    前置知识 第1点:每一个节点都可以看作一棵树的根节点. 第2点:掌握前序.中序.后序遍历顺序.前序遍历:根左右,中序遍历:左根右,后序遍历:左右根. 第3点:掌握双指针或者说滑动窗口,窗口所承载的是左 ...

  6. Suzy找到实习了吗Day 18 | 二叉树进行中:513 找树左下角的值,112 路径总和 ,106.从中序与后序遍历序列构造二叉树

    513 找树左下角的值 solution # Definition for a binary tree node. # class TreeNode: # def __init__(self, val ...

  7. 【必拿下系列】106. 从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树

    两题各自的链接放这里了: 链接: 106 链接: 105 106.从中序与后序遍历序列构造二叉树 如果你是不知道理论的,那就得仔细分析了, 举个例子: 输入:inorder = [9,3,15,20, ...

  8. 二叉树的先序、中序、后序、层序遍历方式详解,由遍历序列构造二叉树过程详解以及C++代码详细实现

    二叉树的遍历 树与二叉树的定义.性质,二叉树的顺序存储结构.链式存储结构 二叉树的遍历是指按某条搜索路径访问树中每个结点,使得每个结点均被访问一次,而且仅被访问一次.由于二叉树是一种非线性结构,每个结 ...

  9. 二叉树的构造及其前序,中序,后序遍历

    2019独角兽企业重金招聘Python工程师标准>>> 今天复习了下二叉树的基础知识. 有二叉树如下: 通过列表生成二叉树 # node树节点 class TreeNode(obje ...

最新文章

  1. 《塞洛特傳說》道具系统
  2. html概述和基本结构
  3. 河南省计算机三级准考证打印入口,2016年下半年河南计算机三级准考证打印入口及网址,计算机等级考试时间查询...
  4. .NET设计模式(1): 简单工厂模式
  5. 坑爹的libxml2 for mingw 编译
  6. 关于直播,所有的技术细节都在这里了(三)
  7. Spark的简介和在大数据领域的地位
  8. 跨部门的bug的沟通
  9. C语言小游戏 |100行代码实现扫雷
  10. 如何查看本机路由表并进行分析?
  11. FPGA 之 SOPC 系列(五)Nios II 软件使用与程序开发 I
  12. serviceWorker 服务器与浏览器之间的代理
  13. usb接口问题折腾记
  14. 物流人必备宝藏软件安利——Microcity
  15. Araxis Merge对比软件工具
  16. proguard学习
  17. 企业需要考虑的远程办公相关问题
  18. 多种方法进行数组从小到大排序
  19. 怎么用VB对接三方验证码短信接口
  20. “MacTalk 跨越边界” iBooks.

热门文章

  1. pdk开发学习之路-QA
  2. ORB—点局部特征原理
  3. 关闭PyCharm中的波浪线-右下角没有小人头的问题解决
  4. 使用python将文字转换为语音朗读
  5. Xcode中蓝色文件夹和黄色文件夹的区别
  6. 模拟地和数字地之间的连接方法
  7. 迷茫的双眼,看不清世界的浑浊
  8. python制作GIF动图
  9. Ruoyi-Vue在Linux云服务器上部署的记录和体会
  10. 模板与泛型编程知识点:编译期多态、typename标识嵌套从属类型名称