已知一棵树的由根至叶子结点按层次输入的结点序列及每个结点的度(每层中自左至右输入),试写出构造此树的孩子兄弟链表算法。
脑子里过了一下觉得没问题,没有实测,如有问题望读者及时指出,万分感激。
typedef struct CSNode {
ElemType data;
struct CSNode *firstchild, *nextsibling;
}CSNode, *CSTree;
CSNode* SearchTree(CSTree T,Elemtype x){
CSTree temp1,temp2;
if(T == NULL)return NULL;
if(T->data == x)return T;
else{
temp1 = SearchTree(T->firstchild,x);
temp2 = SearchTree(T->nextsibling,x);
if(temp1 != NULL) return temp1;
return temp2;
}
}//在树T中查找x
CSNode* CreatCSTreeNode(Elemtype E){
CSNode *p = (CSNode*)malloc(sizeof(CSNode));
p->data = E;
p->firstchild = p->nextsibling = NULL;
return p;
}//创建孩子兄弟链表结