考研之数据结构013_非线性表的二叉树存储与遍历

一、 二叉树的存储结构

1、顺序存储(很少使用)

二叉树的顺序存储,只适合完全二叉树:

比如一个二叉树:将各个结点,在内存上连续的顺序的存放,定义一个数组,TreeNode对应一个结点。每一个结点里边包括一个ElemType(就是实际要存的数据类型)。还有一个bool类型的变量,表示结点是否为空。
我们从上往下,从左到右顺序进行依次存储

以下只适合:完全二叉树
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、链式存储(更方便)

----树里边的每个节点:都有一个数据域,用来存放实际的数据源。并且有两个指针,分别指向左右孩子。如果没有某一个孩子,可以将设为Null。
----如果有n个结点,那么总共就有2n指针域。除了根节点以外,其他每个节点,头上都会连接一个指针。也就是说除了根节点之外,n-1个结点头上是会连有一个指针的,
n个结点的二叉链表共有n+1个空链域。

在这里插入图片描述

二、 二叉树的遍历

遍历:按照某种次序把所有的结点都访问一遍
层次遍历:基于树的层次特性确定的次序规则

1.先序(根左右)

在这里插入图片描根左右述

在这里插入图片描述
在这里插入图片描述

2.中序(左根右)

在这里插入图片描述

3.后序(左右根)

在这里插入图片描述

4.遍历算法的应用举例

在这里插入图片描述
在这里插入图片描述

三、 二叉树的层次遍历

在这里插入图片描述

算法思想:
1.初始化一个辅助队列
2.根节点入队
3.若队列非空,则队头结点出队,访问该结点,如果有左右孩子并将其左右孩子插入队尾
4.重复3直至队列为空
在这里插入图片描述

在这里插入图片描述

四、 由遍历序列来构造二叉树

在这里插入图片描述

在这里插入图片描述

1、如果只给出二叉树的其中一种前/中/后序的的序列,不能唯一确定一课二叉树。
2、如果给出其中两种二叉树序列(必须有中序二叉树),才可以确定二叉树。
在这里插入图片描述

1.前序加中序遍历序列

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.后序加中序遍历序列

在这里插入图片描述
在这里插入图片描述

3.层次序列 加 中序遍历序列

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43989347/article/details/116425532