引入
前面,我们学习了树的一些基础内容,今天我们就来看看,树有哪些存储结构。说到存储结构我们会想到线性表中的顺序存储结构和链式存储结构,那么树会怎么设计自己的存储结构呢?我们一起来看一看~
树的存储结构
要存储树,用简单的顺序存储结构和链式存储结构都不行。因为树中有双亲、孩子、兄弟这些概念,我们不能用简单的顺序、链式存储结构表达树中各个结点的情况。所以,根据不同的角度,我们有三种存储结构表示一棵树
- 双亲表示法
- 孩子表示法
- 孩子兄弟表示法
双亲表示法
双亲表示法,顾名思义,就是以双亲作为索引的关键词的一种存储方式。
- 我们先划出一段连续存储空间,类似数组,存储每一个结点
- 在每个结点中,附设一个指示其双亲结点在数组中位置的元素
- 也就是说,每个结点直到自己和自己的双亲
#define MAXTREE 100
struct pt{
int data; // 结点的数据
int parent; //每个结点父母的位置,也就是数组下标
};
struct tree{
struct pt pointer[MAXTREE]; //100个包含 pt 结构体的数组
int r; //根的位置,一般是 0,也就是数组第一个元素
int n; //结点数目
}


