这是我的代码
#include <iostream>
#include <string.h>
#include <malloc.h>
#include <stdio.h>
using namespace std;
typedef struct node *BinTree;
int n;
struct node{
int data;
BinTree left;
BinTree right;
int flag;
};
void reset(BinTree t);
BinTree insert(BinTree t,int x);
int find(BinTree t,int x);
int jurdge(BinTree t,int temp[]);
BinTree insert(BinTree t,int x){
if(t==NULL){
t=(BinTree)malloc(sizeof(struct node));
t->data=x;
t->flag=0;
t->left=t->right=NULL;
}
else{
if(x>t->data){
t->right=insert(t->right,x);
}
else if(x<t->data){
t->left=insert(t->left,x);
}
}
}
int find(BinTree t,int x){
if(t){
if(x>t->data){
if(t->flag==1){
return find(t->right,x);
}
else{
return 0;
}
}
else if(x<t->data){
if(t->flag==1){
return find(t->left,x);
}
else{
return 0;
}
}
else{
t->flag=1;
return 1;
}
}
else return 0;
}
int jurdge(BinTree t,int b[]){
int i;
for(i=0;i<n;i++){
if(find(t,b[i])==0){
return 0;
}
}
return 1;
}
void reset(BinTree t){
if(t){
t->flag=0;
reset(t->left);
reset(t->right);
}
else{
return ;
}
}
int main(int argc, char** argv) {
int l;
int a[11];
int b[11];
int i;
BinTree t;
while(scanf("%d",&n)!=EOF){
t=NULL;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
if(n==0){
return 0;
}
scanf("%d",&l);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
t=insert(t,a[i]);
}
while(l-->0){
reset(t);
for(i=0;i<n;i++){
scanf("%d",&b[i]);
}
if(jurdge(t,b)==1){
printf("Yes\n");
}
else{
printf("No\n");
}
}
}
return 0;
}