本以为二叉树要写链表的
结果发现不用诶,直接开数组就可以了
哪天有心情的时候写写吧。。
下面是代码:
#include <iostream>
#include <string>
using namespace std;
int a[1024];
int b[1024];
void creatTree(string t,int c[]){
int i,j;
for(i=0;i<t.length();i++){
int k=t[i]-'0';
for(j=1;;){
if(c[j]==-1){
c[j]=k;
break;
}else if(c[j]>k){
j=j*2;
}else{
j=j*2+1;
}
}
}
}
int main(){
int n,i;
string s1,s2;
while(scanf("%d",&n)&&n){
cin>>s1;
for(i=1;i<1024;i++){
a[i]=-1;
}
creatTree(s1, a);
while(n--){
cin>>s2;
for(i=1;i<1024;i++){
b[i]=-1;
}
creatTree(s2, b);
for(i=1;i<1024;i++){
if(a[i]!=b[i]){
break;
}
}
if(i==1024){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
}
}
return 0;
}