CSTree CreateCSTNode(char e);
void BuildCSTree(CSTree &T, char *node, int *degree)
/* 由结点的层序序列node和各结点的度degree构造树的孩子兄弟链表T */
{
int i, j, present=1;
CSTree Tree[50];
if(NULL == node) {
return;
}
Tree[0] = CreateCSTNode(node[0]);
T = Tree[0];
for(i=0; node[i]!='\0'; i++) {
if(degree[i]!=0) {
Tree[present] = CreateCSTNode(node[present]);
Tree[i]->firstChild = Tree[present];
present ++;
for(j=2; j<=degree[i]; j++) {
Tree[present] = CreateCSTNode(node[present]);
Tree[present-1]->nextSibling = Tree[present];
present ++;
}
}
}
}
CSTree CreateCSTNode(char e) {
CSTNode *p = NULL;
p = (CSTNode*)malloc(sizeof(CSTNode));
p->data = e;
p->firstChild = NULL;
p->nextSibling = NULL;
return p;
}