二叉树问题,左边比根小,右边比根大。
AC代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char a[11],b[11];
char ta[1025],tb[1025];
int update(char *t,int o,int ans)
{
if(t[o]==-1)t[o]=ans;
else
{
if(ans>t[o])update(t,o*2+1,ans);
else update(t,o*2,ans);
}
}
int main()
{
int n;
while(scanf("%d",&n),n)
{
scanf("%s",a+1);
memset(ta,-1,sizeof(ta));
for(int i=1;a[i]!='\0';i++)
{
update(ta,1,a[i]);
}
ta[1025]='\0';
while(n--)
{
scanf("%s",b+1);
memset(tb,-1,sizeof(tb));
for(int i=1;b[i]!='\0';i++)
update(tb,1,b[i]);
tb[1025]='\0';
if(!strcmp(ta,tb))puts("YES");
else puts("NO");
}
}
return 0;
}