二叉树的前序序列、中序序列、后序序列、层次序列

article/2025/6/24 2:26:30

前序序列=根 左子树 右子树,中序序列=左子树 根 右子树,后序序列=左子树 右子树 根,层次序列=根 第二层从左到右 第三层从左到右 以此类推。中序序列又称为对称序列。

前序序列第一个节点为根节点,后序序列最后一个节点为根节点,再在中序序列中找到根节点,中序序列中根节点左边的为左子树,右边的为右子树。以中序序列左子树节点序列为新的左子序列,在前序序列或者后序序列中找到左子序列的父节点,再回到左子序列划分左右序列,依次类推,最终画出左子树。右子树同理。

例题:前序序列为ADFGHKLPQRWZ,中序序列为GFHKDLAWRQPZ,画出二叉树,并求后序序列和层次序列。

由前序序列知,A为根节点,在中序序列中找到A,左边GFHKDL为左子树中序序列,右边WRQPZ为右子树中序序列。所以,在前序序列中,DFGHKL为左子树前序序列,PQRWZ为右子树前序序列。

左子树,由左子树前序序列DFGHKL知,D为父节点,回到左子树中序序列GFHKDL找到D,左边中序序列GFHK为D的左孩子,右边L为D的右孩子。回到左子树前序序列DFGHKL知,左边中序序列GFHK中F节点为下一个父节点,G为F的左孩子,HK为F的右孩子。右边,L为右节点没有孩子。HK在前序序列知,H在前,H是K的父节点,K是H的右孩子。由此,可画出左子树。右子树同理。

二叉树为:

 后序序列为:GKHFLDWRQZPA

层次序列为:ADPFLQZGHRKW


http://chatgpt.dhexx.cn/article/KRlQAFKC.shtml

相关文章

331.验证二叉树的前序序列化

如果只给一个前序遍历,是不能构造出二叉树的,但是把空节点也加上,就可以唯一构造一个二叉树,按要求模拟一遍: 代码的执行过程被唯一限制住,还有一类是最优化问题,用算法解决该类问题。 class …

【数据结构】二叉树的链式存储结构(通过前序序列和中序序列构造二叉树

说明:需要分别输入要二叉树的前序序列和中序序列才能构建二叉树。如果构建失败,程序会报错。 比如我们给定一个二叉树,容易知道 前序序列为:GDAFEMHZ 中序序列为:ADEFGHMZ 程序运行结果: 源代码 #include&…

二叉树:已知前序序列与后序序列建树

二叉树:已知前序与后序建树 已知前序与中序、后序与中序建树是常遇到的算法问题。若已知前序序列与后序序列,要求输出满足条件的树的个数或者输出所有可能的树的中序序列,该怎么解决?下面我们一步步讨论这个问题。 首先&#xf…

LeetCode 每日一题331. 验证二叉树的前序序列化

331. 验证二叉树的前序序列化 序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 _9_/ \3 2/ \ / \4 1 # 6 / \ / \ / …

试证明:已知二叉树的前序序列和中序序列,可以唯一确定该二叉树

假设二叉树BT的总的结点个数为n,前序序列pre为,中序序列pin为,现用数学归纳法证明pre和pin可以唯一确定这棵二叉树: 1. n 1时,前序和中序序列都各只有一个元素,,此时等于,为BT的根…

验证二叉树的前序序列化[抽象前序遍历]

抽象前序遍历 前言一、验证二叉树的前序序列化二、抽象前序遍历总结参考文献 前言 难题要么复杂,要么未知,要么就是抽象考察,这三种类型都比较锻炼分析问题的能力。 一、验证二叉树的前序序列化 二、抽象前序遍历 package everyday.tree;p…

通过前序序列和中序序列或中序序列和后序序列还原二叉树(Java)

首先看一下这个二叉树的结构,回忆一下前序序列的输出方式(中前后),中序序列的输出方式(前中后),后序序列的输出方式(前后中)。 前中序列还原二叉树 此二叉树的前中序列…

已知前序序列和中序序列重建二叉树

一.解决方法: 在相关的书籍中描述了一个递归的解决方法,其算法思想如下: 1.从前序序列中第一个元素开始,取出一个元素,索引后移一位(preIndex1) 2.根据选择到的数值创建一个树节点newNode 3.然…

7-3 前序序列创建二叉树 (25 分) PTA

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以二叉链表存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,代表一棵空树。然后再对二叉树进行中序遍…

C++实现 利用前序序列和中序序列构建二叉树

前言:已知一个二叉树的中序序列和前序序列,或者中序序列和后序序列就可以唯一确定一个二叉树(必须知道中序序列),只知道前序和后序不能创建唯一的二叉树。 1.引例 已知下列某二叉树(8个结点)的两个序列,如…

7-2 前序序列创建二叉树

7-2 前序序列创建二叉树 (25 分) 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以二叉链表存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,代表一…

由序列确定二叉树:前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 代码实现(c语言)

下面三种序列可以唯一的构造唯一的一棵二叉树&#xff1a; 前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #…

python实现根据前序序列和中序序列求二叉树的后序序列

根据前序序列求根结点&#xff0c;根据中序序列求左右子树。 如上图&#xff1a;根据前序序列&#xff0c;谁在前面谁就是根结点&#xff1b;根据根结点&#xff0c;确定左右子树。 class BiTreeNode:def __init__(self, data):self.data dataself.lchild Noneself.rchild …

已知二叉树的前序序列跟中序序列求后序序列(C语言)

原理是&#xff0c;比如 先序序列决定二叉树的根结点&#xff08;比如上图的“1”&#xff09;&#xff0c;后序序列决定二叉树的左右子结点&#xff08;比如上图的“4”&#xff0c;“7”&#xff0c;“2”为左子树的那部分&#xff0c;而“8”&#xff0c;“5”&#xff0c;“…

验证二叉树的前序序列化

缩点法验证二叉树的前序序列化 题目解决思路代码说明 题目 &#xff08;1&#xff09;序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时&#xff0c;我们可以记录下这个节点的值。如果它是一个空节点&#xff0c;我们可以使用一个标记值记录&#xff0c;例如 …

验证二叉树的前序序列化Python解法

序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时&#xff0c;我们可以记录下这个节点的值。如果它是一个空节点&#xff0c;我们可以使用一个标记值记录&#xff0c;例如 #。 例如&#xff0c;上面的二叉树可以被序列化为字符串 "9,3,4,#,#,1,#,#,2,#,…

7-1 前序序列创建二叉树

7-1 前序序列创建二叉树 编一个程序&#xff0c;读入用户输入的一串先序遍历字符串&#xff0c;根据此字符串建立一个二叉树&#xff08;以二叉链表存储&#xff09;。 例如如下的先序遍历字符串&#xff1a; ABC##DE#G##F### 其中“#”表示的是空格&#xff0c;代表一棵空树。…

超容易理解的数据结构前序,中序和后序序列

今天听了我们数据结构老师讲三序序列&#xff0c;发现有很多同学不能根据二叉树推&#xff0c;特发此文讲解。 对于三序序列&#xff0c;我们可以选择构造一个表格并创造一个指针&#xff0c;将指针指于二叉树根结点&#xff0c;对应表格则如下所示&#xff0c;若某节点无左孩…

IIC通信协议详解[转载]

IIC的基本介绍 IIC的简介 IIC&#xff08;Inter&#xff0d;Integrated Circuit&#xff09;总线是一种由PHILIPS公司在80年代开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。它是半双工通信方式。 IIC总线最主要的优点是其简单性和有效性。由于接口直接在组件…

IIC通信协议学习

1.IIC简介 IIC&#xff1a;Inter-Integrated Circuit&#xff08;内部集成电路&#xff09; 需要两个管脚&#xff1a;SDA、SCL SPI协议&#xff1a;一个主设备对多个从设备&#xff0c;每增加一个从设备&#xff0c;需要增加一个端口CS* 特点&#xff1a;速度较快&#xff…