思路
设置一个辅助数组pointer[],存储新树的各结点的地址,再由层次序列与结点的度,逐个链接点。
#define maxNodes 15
void createCStree_Degree(CSTree &T,DataType e[],int degree[],int n){
//层次序列e[],各结点的度degree[]
//n 树结点个数
CSNode *pointer=new CSNode[maxNodes];
int i,j,d,k=0;
for(i=0;i<n;i++){
pointer[i]=new CSNode;
pointer[i]->data=e[i];
pointer[i]->lchild = pointer[i]->rsibling=NULL;
}
for(i=0;i<n;i++){
d=degree[i];
if(d){
k++;
pointer[i]->lchild=pointer[k];
for(j=2;j<=d;j++){
pointer[j-1]->rsibling=pointer[j];
}
}
}
T=pointer[0];
delete []pointer;
}