树的存储结构: 1、 双亲表示法:采用一组连续空间来存储每个结点,同时在每个结点中增设一个伪指针,指示其双亲结点在数组中的位置。如下 2、
3、 双亲表示法描述代码如下: #define MAX_TREE_SIZE 100 //树中最多结点数 Typedef struct{ //树的结点定义 ElemType data;//数据元素 Int parent; //双亲位置域 }PTNode; Typedef struct{ //树的类型定义 PTNode nodes[MAX_TREE_SIZE]; //双亲表示 Int n;//结点数 }PTree; 可以很快找到双亲结点,但求结点的孩子时却需要遍历整个结构。 4、 孩子表示法:将每个结点的孩子结点都用单链表连接起来形成一个线性结构,则N个结点就有N个孩子链表
5、 孩子兄弟表示法:以二叉链表作为树的存储结构。孩子兄弟表示法是使每个结点包括三个部分内容:结点值、指向结点第一个孩子结点的指针和指向结点下一个兄弟结点的指针
孩子兄弟表示法存储结构如下 Typedef struct CSNode{ ElemType data;//数据域 Struct CSNode *firstchild,*nextsibling;//第一个孩子和右兄弟指针 }CSNode,*CSTree;