hdu——3791——二叉樹搜尋樹
阿新 • • 發佈:2019-02-20
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int main()
{
int n;
int tree1[1005];
int tree2[1005];
char s[25];
int j,i;
while(cin>>n)
{
if(n==0)
return 0;
scanf("%s",s);
memset(tree1,-1,sizeof(tree1));
for(i=0;s[i]!='\0';i++)
{
int t=s[i]-'0';
j=1;
while(tree1[j]!=-1)
{
if(t<=tree1[j])
j=j*2;
else
j=j*2+1;
}
tree1[j]=t;
}
while(n--)
{
scanf("%s",s);
memset(tree2,-1,sizeof(tree2));
for(i=0;s[i]!='\0';i++)
{
int t=s[i]-'0';
j=1;
while(tree2[j]!=-1)
{
if(t<=tree2[j])
j=j*2;
else
j=j*2+1;
}
tree2[j]=t;
}
for(i=1;i<=1024&&tree1[i]==tree2[i];i++)
if(i>1024)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
return 0;
}