测试数据没错 找了半天不知道错在哪。。一直WA
http://acm.hdu.edu.cn/showproblem.php?pid=3791
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct treenode
{
struct treenode* left;
struct treenode* right;
int data;
} *tree;
void print(tree t)
{
if (t != NULL)
{
cout <<t->data;
print(t->left);
print(t->right);
}
}
tree insert(tree t,int m)
{
if (t == NULL)
{
t=new treenode;
t->data = m;
t->left = NULL;
t->right = NULL;
}
else
{
if (m > t->data)
t->right=insert(t->right, m);
else
t->left=insert(t->left, m);
}
return t;
}
bool compare(tree t1, tree t2)
{
if (t1 == NULL&&t2 == NULL)
return true;
if ((t1 == NULL&&t2 != NULL) || (t2 == NULL&&t1 != NULL))
return false;
if (t1->data!=t2->data)
return false;
else
{
bool a = compare(t1->left, t2->left);
bool b = compare(t1->right, t2->right);
return a&&b;
}
}
int main()
{
int n;
while (cin >> n,n)
{
char ch;
cin.get();
tree base = NULL;
while ((ch = cin.get()) != '\n')
base = insert(base, atoi(&ch));
print(base);
cout << endl;
for (int i = 0; i < n; i++)
{
tree t=NULL;
while ((ch = cin.get()) != '\n')
t = insert(t, atoi(&ch));
if (compare(base, t))
cout << "YES" << endl;
else
cout << "NO" << endl;
}
}
}