#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");
}
}
}
SDUT2482二叉排序树
最新推荐文章于 2019-07-31 19:24:14 发布