SDUT2482二叉排序树

来源:互联网 发布:c语言中float取值范围 编辑:程序博客网 时间:2024/06/01 14:30
#include<bits/stdc++.h>using namespace std;char pre0[55],in0[55],post0[55];int pre00,in00,post00;struct tree{    char data;    struct tree *lc,*rc;};void creat(struct tree *&node,char a){    if(node==NULL)    {        node=(struct tree *)malloc(sizeof(struct tree));        node->data=a;        node->lc=node->rc=NULL;    }    else if(a<node->data)        creat(node->lc,a);    else        creat(node->rc,a);};void pre(struct tree*t){    if(t)    {        pre0[pre00++]=t->data;        pre(t->lc);        pre(t->rc);    }}void post(struct tree*t){    if(t)    {        post(t->lc);        post0[post00++]=t->data;        post(t->rc);    }}int main(){    int n;    while(~scanf("%d",&n)&&n)    {        struct tree *root;        root=NULL;        scanf("%s",in0);        int len=strlen(in0);        for(int i=0; i<len; i++)            creat(root,in0[i]);        pre00=0;        post00=0;        pre(root);        pre0[pre00]='\0';        post(root);        post0[post00]='\0';        char t[55];        while(n--)        {            scanf("%s",t);            if(strcmp(pre0,t)==0||strcmp(in0,t)==0||strcmp(post0,t)==0)                printf("YES\n");            else                printf("NO\n");        }    }}

0 0
原创粉丝点击