1086. Tree Traversals Again (25)

来源:互联网 发布:淘宝店铺类目修改 编辑:程序博客网 时间:2024/06/08 14:55

1086. Tree Traversals Again (25)
博主这里采用了建树的方法

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <malloc.h>struct BTree{    int data;    struct BTree *lchild,*rchild;}*T;int inorder[30+1],preorder[30+1];int incur,precur,n;int stack[30+1],top;void Read(int *c){    char s[12];    gets(s);    if(s[1]=='u')    {        char *p=&s[5];        int m=atoi(p);        stack[top++]=m;        preorder[precur++]=m;    }    else    {        (*c)++;        inorder[incur++]=stack[--top];    }}void creatBT(int begin,int end,struct BTree **T){    if(begin>end)        return;    int root=begin;    int e=preorder[precur++];    (*T)=(struct BTree*)malloc(sizeof(struct BTree));    (*T)->data=e;    (*T)->lchild=(*T)->rchild=NULL;    while(root<=end&&e!=inorder[root])        ++root;    creatBT(begin,root-1,&(*T)->lchild);    creatBT(root+1,end,&(*T)->rchild);}void PostTraverse(struct BTree *T){    if(T)    {        PostTraverse(T->lchild);        PostTraverse(T->rchild);        printf("%d",T->data);        if(--n)printf(" ");    }}int main(){    int c=0;    scanf("%d",&n);    getchar();    while(c<n)        Read(&c);    precur=0;    creatBT(0,n-1,&T);    PostTraverse(T);    return 0;}

不建树的代码

#include <stdio.h>#include <stdlib.h>#include <string.h>int inorder[30+1],preorder[30+1];int incur,precur,n;int stack[30+1],top;void Read(int *c){    char s[12];    gets(s);    if(s[1]=='u')    {        char *p=&s[5];        int m=atoi(p);        stack[top++]=m;        preorder[precur++]=m;    }    else    {        (*c)++;        inorder[incur++]=stack[--top];    }}void display(int begin,int end){    if(begin>end)        return;    int root=begin;    int e=preorder[precur++];    while(root<=end&&e!=inorder[root])        ++root;    display(begin,root-1);    display(root+1,end);    printf("%d",e);    if(--n)printf(" ");}int main(){    int c=0;    scanf("%d",&n);    getchar();    while(c<n)        Read(&c);    precur=0;    display(0,n-1);    return 0;}
0 0
原创粉丝点击