注意,本文归类于“二叉树练习”系列文章,但具体的解释、实现均为普通的树而并非二叉树,望读者注意。
概念
双亲表示法,即储存树结点的同时储存其所属的父结点的表示法,通常利用顺序表(数组)实现。使用双亲表示法储存树,使得树具有如下特性:
- 可以快速地找到一个结点的父结点
- 寻找一个结点的子节点需要遍历整颗树
结构定义
使用C++实现。需要注意,Tree结构体内的Node数组不是以指针的形式定义,而下文Tree结构体却使用指针来储存,要注意区分指针的解引用符号“->”和对象的“.”符号的区别。
const int MAX_SIZE = 102; //数组的大小,即整颗树可以有的最多结点数量,我定为102
//树结点
struct Node
{
char data; //树结点所携带的数据
int parent; //该结点对应的父亲结点的数组下标
};
//树
struct Tree
{
Node nodes[MAX_SIZE]; //存放所有树结点的数组
int size; //树结点数量
};
创建树
为方便起见,这里使用王道数据结构书里给的树结构作为例子,树的结构示意图如下:

使用双亲表示法表示后:

本文介绍了双亲表示法在树结构中的应用,通过C++代码展示了如何创建树、计算树的高度以及输出所有叶节点。树的节点数据和父节点下标存储在数组中,便于快速访问父节点,但寻找子节点需遍历。文章提供了一个具体的树结构示例,并提供了相关操作的实现方法。
最低0.47元/天 解锁文章
1842





