双亲表示法
用一组连续的存储空间存储树的结点,同时再每个结点中,用一个变量存储该结点的双亲结点在数组中的位置
#define MaxSize 50
typedef int Elemtype;
typedef struct TNode {
Elemtype data; //结点数据
int parent; //该结点双亲再数组中的下标
}TNode;
typedef struct Tree{
TNode nodes[MaxSize]; //结点数组
int n; //结点数量
}Tree; //树的双亲表示结构
孩子表示法
把每个结点的孩子结点排列起来存储成一个单链表,所以n个结点就有n个链表
如果是叶子结点,那么这个结点的孩子单链表就是空的
然后n个单链表的头指针有存储再一个顺序表(数组)中
#define MaxSize 100
typedef char Elemtype;
typedef struct CNode {
int child; //该孩子在表头数组的下标
CNode *next; //指向该结点的下一个孩子结点
}CNode,*Child; //孩子结点数据类型
typedef struct {
Elemtype data; //结点数据域
Child firstChild; //指向该结点的第一个孩子结点
}TNode;
typedef struct {
TNode nodes[MaxSize]; //结点数据与
int n; //树中结点个数
}Tree; //树的孩子表示结构
孩子兄弟表示法
孩子兄弟表示法:顾