传送门
题目大意
判断两序列是否为同一二叉搜索树序列
思路
直接暴力找,如果这个数大于他就是左孩子,否则就是右孩子
代码
int main(){
char s[20];
int tree[550],tree1[550];
int n;
while(cin>>n){
if(n==0)break;
scanf("%s",s);
memset(tree,-1,sizeof tree);
for(int i=0;s[i];i++){
int c=s[i]-'0';
int j=1;
while(tree[j]!=-1){
if(c>tree[j])
j=j*2+1;
else
j=j*2;
}
tree[j]=c;
}
while(n--){
scanf("%s",s);
memset(tree1,-1,sizeof tree1);
for(int i=0;s[i];i++){
int j=1;
int c=s[i]-'0';
while(tree1[j]!=-1){
if(c>tree1[j])
j=j*2+1;
else
j=j*2;
}
tree1[j]=c;
}
int flag=1;
for(int i=1;i<=512;i++){
if(tree[i]!=tree1[i]){
flag=0;
puts("NO");
break;
}
}
if(flag){
puts("YES");
}
}
}
}