查看原题目请点我这里
解题思路
首先进行根据输入的数据建立二叉排序树,然后将后面的输入依次与最开始的树对比是否是相同的树。关于是否是两棵相同的树,LeetCode上面有道这样的题,好多大神写的代码简洁又高效,我刚好想到这上面的这道题,直接搬过来用了。


#include<cstdio>
#include<cstring>
struct node{
    int data;
    node *lchild,*rchild;
}; 
char str[15],s[15];
void insert(node* &root,int data){
    if(root==NULL){
        root=new node;
        root->data=data;
        root->lchild=root->rchild=NULL;
        return;
    }
    if(data > root->data) 
        insert(root->rchild,data);
    else 
        insert(root->lchild,data);
}
bool sameTree(node* p,node* q){
    if(p==0) return q==0;
    if(q==0) return false;
    return p->data==q->data&&sameTree(p->lchild,q->lchild)&&sameTree(p->rchild,q->rchild);
}
int main(){
    int n;
    while(scanf("%d",&n)!=EOF&&n!=0){
        scanf("%s",str);
        int len=strlen(str);
        node *root=NULL;
        for(int i=0;i<len;i++){
            insert(root,str[i]-'0');
        }
        for(int i=0;i<n;i++){
            scanf("%s",s);
            node *root1=NULL;
            int len1=strlen(s);
            for(int i=0;i<len1;i++){
                insert(root1,s[i]-'0');
            }
            if(sameTree(root,root1))
                printf("YES\n");
            else 
                printf("NO\n");
        }   
    }
    return 0;
}