#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string>
#include <string.h>
#include <vector>
#include <queue>
#include <stack>
#include <sstream>
using namespace std;
//1009
struct node{
node *l;
node *r;
int d;
};
node* Insert(node *&t,int x){
if(t==NULL){
t=(node*)malloc(sizeof(node));
t->l=t->r=NULL;
t->d=x;
return t;
}
else if(x<t->d)
Insert(t->l,x);
else if(x>t->d)
Insert(t->r,x);
}
void preOrder(node *t,vector<int> &v){
v.push_back(t->d);
if(t->l!=NULL) preOrder(t->l,v);
if(t->r!=NULL) preOrder(t->r,v);
}
void inOrder(node *t,vector<int> &v){
if(t->l!=NULL) inOrder(t->l,v);
v.push_back(t->d);
if(t->r!=NULL) inOrder(t->r,v);
}
string s1,s2;
int n;
vector<int> v1,v2;
int main(){
// freopen("input.txt","r",stdin);
while(cin>>n&&n!=0){
cin>>s1;
node* t1=NULL;
v1.clear();
for(int i=0;i<s1.size();i++) Insert(t1,s1[i]-'0');
preOrder(t1,v1);
inOrder(t1,v1);
while(n--){
cin>>s2;v2.clear();
node *t2=NULL;
for(int i=0;i<s2.size();i++) Insert(t2,s2[i]-'0');
preOrder(t2,v2);
inOrder(t2,v2);
if(v1==v2) printf("YES\n");
else printf("NO\n");
}
}
return 0;
}
/**************************************************************
Problem: 1009
User: cust123
Language: C++
Result: Accepted
Time:0 ms
Memory:1520 kb
****************************************************************/
题目1009:二叉搜索树
最新推荐文章于 2024-06-29 19:05:30 发布