学习了树的存储方法
存储方法有:双亲表示法、孩子表示法、孩子兄弟表示法。
双亲表示法:1、先按层序编号。2、按结点的层序编号,在数组中对应单元存放一个结点(data,parent)3、结点data部分存放树结点中存储的数据元素。4、结点parent部分存放该结点双亲结点的编号。
存储结构
#define MAX 100
typedef struct TNode
{ DataType data;
int parent;
}TNode;
typedef struct
{ TNode tree[MAX];
int nodenum;//结点数
}ParentTree;
孩子表示法
孩子链表结点的定义
typedef struct ChildNode
{ int Child;
struct ChildNode *next;
}ChildNode;
顺序表结点的定义
typedef struct
{ DataType data;
ChildNode *FirstChild;
}DataNode;
树的定义
typedef struct
{ DataNode nodes[MAX];
int root;//根结点在线性表的位置
int num;//结点个数
}ChildTree;
孩子兄弟表示法
1、也叫左孩子-右兄弟表示法。2、链表中每个结点的两个链域分别指向该结点的最 左儿子和右邻兄弟。
存储结构
typedef struct CSNode
{ DataType data; //结点信息
struct CSNode *FirstChild;//第一个孩子
struct CSNode *NextSibling;//下一个兄弟
}CSNode, *CSTree;