求该树的孩子兄弟链式表达,已知层序遍历和每个节点的度(来自网络)

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;
}

 

posted @ 2018-08-23 17:03  三儿啊  阅读(323)  评论(0)    收藏  举报