zoukankan      html  css  js  c++  java
  • 输入后序和中序,构造二叉树,并输出该二叉树的层序、前序、中序、后序遍历结构;输入后序和中序,构造二叉树,并输出该二叉树的层序、前序、中序、后序遍历结构

    /*
    输入先序和中序,构造二叉树,并输出该二叉树的层序、前序、中序、后序遍历结构
    输入后序和中序,构造二叉树,并输出该二叉树的层序、前序、中序、后序遍历结构
    */
    #include <stdio.h>
    #include<string.h>
    #include<malloc.h>
    typedef struct node{
        char data;
        struct node *lchild;
        struct node *rchild;
    }BTree;
    BTree *createPre(char *pre,char *in,int n){
        if(n<=0) return NULL;
        char *p;
        int k;
        BTree *b;
        b=(BTree *)malloc(sizeof(BTree));
        b->data=*pre;
        for(p=in;p<in+n;p++)
            if(*p==*pre)
                break;
        k=p-in;
        b->lchild=createPre(pre+1,in,k);
        b->rchild=createPre(pre+k+1,p+1,n-k-1);
        return b;
    }
    BTree *createPost(char *post,char *in,int n){
        if(n<=0) return NULL;
        char *p,r;
        int k;
        r=*(post+n-1);
        BTree *b;
        b=(BTree *)malloc(sizeof(BTree));
        b->data=r;
        for(p=in;p<in+n;p++)
            if(*p==r)
                break;
        k=p-in;
        b->lchild=createPost(post,in,k);
        b->rchild=createPost(post+k,p+1,n-k-1);
        return b;
    }
    void presort(BTree *b){
        BTree *p,*st[10];
        int top=-1;
        p=b;
        while(p!=NULL||top>-1){
            while(p!=NULL){
                printf("%c ",p->data);
                top++;
                st[top]=p;
                p=p->lchild;
            }
            if(top>-1){
                p=st[top];
                top--;
                p=p->rchild;
            }
        }
        printf("
    ");
    }
    void insort(BTree *b){
        BTree *p,*st[10];
        int top=-1;
        p=b;
        while(p!=NULL||top>-1){
            while(p!=NULL){
                top++;
                st[top]=p;
                p=p->lchild;
            }
            if(top>-1){
                p=st[top];
                top--;
                printf("%c ",p->data);
                p=p->rchild;
            }
        }
        printf("
    ");
    }
    void postsort(BTree *b){
        BTree *p,*st[10];
        int t1=-1,t2=-1,tag[10],f;
        p=b;
        while(p!=NULL||t1>-1){
            if(p!=NULL){
                t1++;
                st[t1]=p;
                t2++;
                tag[t2]=1;
                p=p->lchild;
            }else{
                p=st[t1];
                t1--;
                f=tag[t2];
                t2--;
                if(f==1){
                    t1++;
                    st[t1]=p;
                    t2++;
                    tag[t2]=2;
                    p=p->rchild;
                }else{
                    printf("%c ",p->data);
                    p=NULL;
                }
            }
        }
        printf("
    ");
    }
    void censort(BTree *b){
        BTree *p,*qu[10];
        int f=-1,r=-1;
        p=b;
        r++;
        qu[r]=p;
        while(f!=r){
            f=(f+1)%10;
            p=qu[f];
            printf("%c ",p->data);
            if(p->lchild!=NULL){
                r=(r+1)%10;
                qu[r]=p->lchild;
            }
            if(p->rchild!=NULL){
                r=(r+1)%10;
                qu[r]=p->rchild;
            }
        }
        printf("
    ");
    }
    int main()
    {
        char pre[100],in[100],post[100];
        int n=7;
        BTree *b;
        gets(pre);
        gets(in);
        b=createPre(pre,in,n);
        censort(b);
        presort(b);
        insort(b);
        postsort(b);
        gets(post);
        gets(in);
        b=createPost(post,in,n);
        censort(b);
        presort(b);
        insort(b);
        postsort(b);
        return 0;
    }
  • 相关阅读:
    【权值分块】bzoj1208 [HNOI2004]宠物收养所
    【权值分块】bzoj1588 [HNOI2002]营业额统计
    【权值分块】bzoj1503 [NOI2004]郁闷的出纳员
    【pb_ds】bzoj1056 [HAOI2008]排名系统 bzoj1862 [Zjoi2006]GameZ游戏排名系统
    【分块】【树状数组】bzoj3744 Gty的妹子序列
    【权值分块】bzoj3685 普通van Emde Boas树
    【权值分块】bzoj3224 Tyvj 1728 普通平衡树
    【搜索】数学组の问题
    【块状链表】AutSky_JadeK的块状链表模板+总结(STL版)
    【DFS】【最短路】【spfa】【BFS】洛谷P2296 NOIP2014提高组 day2 T2 寻找道路
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/11896750.html
Copyright © 2011-2022 走看看