阅读背景:

广义表表示二叉树结构生成二叉链表的算法

来源:互联网 
BinTNode*   CreatTree(char  str[]){
    BinTNode*   st[100];    //存放父结点的顺序栈; 
    BinTNode    *p=NULL,*b=NULL;    //p为存放结点的临时指针,b作为返回的临时指针 
    int    top-1,j=0,k;          //top=-1,作为栈的索引,k作为判断是左子树,还是右子树; 
    char    ch = str[j];
    while(ch != '
BinTNode*   CreatTree(char  str[]){
    BinTNode*   st[100];    //存放父结点的顺序栈; 
    BinTNode    *p=NULL,*b=NULL;    //p为存放结点的临时指针,b作为返回的临时指针 
    int    top-1,j=0,k;          //top=-1,作为栈的索引,k作为判断是左子树,还是右子树; 
    char    ch = str[j];
    while(ch != '\0'){
        switch(ch){
            case '(':    top++;st[top]=p;k=1;break;
            case ')':    top--;break;
            case ',':    k=2;break;
            default:
                        p = (BinTNode*)malloc(sizeof(BinTNode));
                        p->data = str[j];
                        p->lchild = NULL;
                        p->rchild = NULL;
                       
                        if(b ==  NULL)
                            b=p;
                        else{
                             switch(k){
                                case 1:st[top]->lchild = p;
                                case 2:st[top]->rchild = p;
                             }
                        }
        }
    j++;ch = str[j];
    }
    return   b;
}


'){ switch(ch){ case '(': top++;st[top]=p;k=1;break; case ')': top--;break; case ',': k=2;break; default: p = (BinTNode*)malloc(sizeof(BinTNode)); p->data = str[j]; p->lchild = NULL; p->rchild = NULL; if(b == NULL) b=p; else{ switch(k){ case 1:st[top]->lchild = p; case 2:st[top]->rchild = p; } } } j++;ch = str[j]; } return b; }BinTNode* CreatTree(char str[]){ BinTNod



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: