解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
typedef struct tree
{
int m;
struct tree *l;
struct tree *r;
}T;
void build(T *root,T *s)
{
if(s->m<root->m)
{
if(root->l)
{
build(root->l,s);
}
else
{
root->l=s;
}
}
else if(s->m>root->m)
{
if(root->r)
{
build(root->r,s);
}
else
{
root->r=s;
}
}
}
int f(T *root1,T *root2)
{
if(root1==NULL&&root2==NULL)
{
return 1;
}
else if(root1!=NULL&&root2!=NULL)
{
if(root1->m!=root2->m)
{
return 0;
}
else
{
return (f(root1->l,root2->l)&&f(root1->r,root2->r));
}
}
}
int main()
{
int N;
while(1)
{
scanf("%d",&N);
getchar();
if(N==0)
{
break;
}
char a[11];
char b[11];
gets(a);
int l=strlen(a);
int i;
T *root1;
root1=malloc(sizeof(T));
root1->m=a[0]-'0';
root1->l=NULL;
root1->r=NULL;
for(i=1;i<l;i++)
{
T *s;
s=malloc(sizeof(T));
s->m=a[i]-'0';
s->l=NULL;
s->r=NULL;
build(root1,s);
}
while(N--)
{
gets(b);
T *root2;
root2=malloc(sizeof(T));
root2->m=b[0]-'0';
root2->l=NULL;
root2->r=NULL;
int j;
for(j=1;j<l;j++)
{
T *s;
s=malloc(sizeof(T));
s->m=b[j]-'0';
s->l=NULL;
s->r=NULL;
build(root2,s);
}
if(f(root1,root2)==1)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
}
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:701 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:724 |
【金明的预算方案】 (C++代码)浏览:873 |
用筛法求之N内的素数。 (C语言代码)浏览:890 |
【绝对值排序】 (C语言代码)浏览:892 |
1025题解浏览:796 |
简单的a+b (C语言代码)浏览:587 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:518 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:859 |
简单的a+b (C语言代码)浏览:265 |