#include<iostream>
#include<cstring>
#include<malloc.h>
using namespace std;
typedef struct BiNode{
char data;
struct BiNode *lchild;
struct BiNode *rchild;
}*BiTree,BiNode;
BiNode *Insert(BiTree &T,char x){
if(T){
if(x<T->data)
T->lchild=Insert(T->lchild,x);
else
T->rchild=Insert(T->rchild,x);
}
else{
T=(BiTree)malloc(sizeof(BiNode));
T->data=x;
T->lchild=T->rchild=NULL;
}
return T;
}
void PreOrder(BiTree T,char tmp[],int &i){
if(T){
tmp[i++]=T->data;
PreOrder(T->lchild,tmp,i);
PreOrder(T->rchild,tmp,i);
}
}
void InOrder(BiTree T,char tmp[],int &i){
if(T){
InOrder(T->lchild,tmp,i);
tmp[i++]=T->data;
InOrder(T->rchild,tmp,i);
}
}
int main(){
int n;
BiTree T=NULL;
char str[11];
char tmp1[25],tmp2[25];
while(cin>>n&&n!=0){
int len1,len2;
len1=len2=0;
cin>>str;
for(int j=0;str[j];j++)
T=Insert(T,str[j]);//先创建一棵树
PreOrder(T,tmp1,len1);
InOrder(T,tmp1,len1);
tmp1[len1]=0;
for(int j=0;j<n;j++){
cin>>str;
T=NULL;
for(int k=0;str[k];k++)
T=Insert(T,str[k]);//先创建一棵树
PreOrder(T,tmp2,len2);
InOrder(T,tmp2,len2);
tmp2[len2]=0;
if(strcmp(tmp1,tmp2)==0)
cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
return 0;
}
九度OJ1009二叉搜索树
最新推荐文章于 2018-02-13 10:59:41 发布