?? same.c
字號:
#include <stdio.h>
#include <malloc.h>
typedef struct node *btlink;
struct node{
struct node *left;
struct node *right;
};
void main()
{
int same(btlink tree1,btlink tree2);
int k,n,m,a[3];
btlink tree1,tree2;
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d",&n);k=n;
tree1=(struct node *)malloc(sizeof(*tree1)*(n+1));
while(n--)
{
scanf("%d%d%d",&a[0],&a[1],&a[2]);
if(a[1]!=0)
tree1[a[0]].left=&tree1[a[1]];
else tree1[a[0]].left=NULL;
if(a[2]!=0)
tree1[a[0]].right=&tree1[a[2]];
else tree1[a[0]].right=NULL;
}
scanf("%d",&m);
if(m!=k)
{printf("No");return;}
else
{ tree2=(struct node *)malloc(sizeof(*tree2)*(m+1));
while(m--)
{
scanf("%d%d%d",&a[0],&a[1],&a[2]);
if(a[1]!=0)
tree2[a[0]].left=&tree2[a[1]];
else tree2[a[0]].left=NULL;
if(a[2]!=0)
tree2[a[0]].right=&tree2[a[2]];
else tree2[a[0]].right=NULL;
}
}
if(same(&tree1[1],&tree2[1])==1)
printf("Yes");
else printf("No");
}
int same(btlink tree1,btlink tree2)
{
if(tree1->left!=NULL&&tree1->right!=NULL)
{if(tree2->left!=NULL&&tree2->right!=NULL)
if(same(tree1->left,tree2->left)&&same(tree1->right,tree2->right))
return 1;
else return 0;
else return 0;}
else if(tree1->left!=NULL&&tree1->right==NULL)
{if(tree2->left!=NULL&&tree2->right==NULL)
if(same(tree1->left,tree2->left))
return 1;
else return 0;
else return 0;}
else if(tree1->left==NULL&&tree1->right!=NULL)
{if(tree2->left==NULL&&tree2->right!=NULL)
if(same(tree1->right,tree2->right))
return 1;
else return 0;
else return 0;}
else
{if(tree2->left==NULL&&tree2->right==NULL)
return 1;
else return 0;}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -