6.6.2 树的孩子表示法 树的孩子链表存储表示 typedef struct CTNode { // 孩子结点 int child; struct CTNode *next; } *ChildPtr; typedef struct { ElemType data; // 结点的数据元素 ChildPtr firstchild; // 孩子链表头指针 } CTBox; typedef struct { CTBox nodes[MAX_TREE_SIZE]; int n, r; // 结点数和根结点的位置 } CTree; |
让每个结点的"子树根"构成一个线性表,以链表作它的存储结构,令其头指针和结点的数据元素构成一个结点,并将所有这样的结点存放在一个地址连续的存储空间里,所构成的树的存储结构称为树的孩子链表。当然,在需要的情况下,也可以如同双亲链表,在结点结构中加上双亲的"地址号"。 注意,"孩子结点"中的"子树根"只存放该结点在一维数组中的下标。由于整个结构无法用一个"指针"表示,所以对整个树结构当然还需要给出结点数目和根的位置。 |
|||
例如,下列图示树的孩子链表如左图所示。 |