树的存储结构
树的存储结构
双亲表示法
以一组连续的空间存储树的结点,同时在每个结点中,附设一个指示器指示器双亲结点在数组中的位置。
结点结构如表1所示:
表1-结点结构
其中data是数据域,存储结点的数据信息。而parent是指针域,存储该结点的双亲在数组的下标。
定义代码
/* 树的双亲表示法结点结构定义 */
#define MAX_TREE_SIZE 100
typedef int TElemType; //树结点的数据类型
typedef struct PTNode{ //结点结构
TElemType data; //结点数据
int parent; //双亲位置
} PTNode;
typedef struct{
PTNode nodes[MAX_TREE_SIZE]; //结点数组
int r, n; //根的位置和结点数
}PTree;
约定根结点的位置域设置为-1
如图1的树结构和表2中的树双亲表示所示:
表2-树的双亲表示法
图1-树结构图
改进:
- 关注结点孩子:设置左孩子域(长子域),如果没有孩子的结点,这个长子域就设置为-1。
- 关注结点兄弟:设置右兄弟域,记录下右兄弟的下标。如果右兄弟不存在,这赋值为-1。
存储结构的设计是一个非常灵活的过程。一个存储结构设计得是否合理,取决于基于该存储结构的运算是否适合、是否方便,时间复杂度好不好等。
孩子表示法
待更…

浙公网安备 33010602011771号