PTA 数据结构与算法题目集(中文)5-3 树的同构 (25分)
来源:互联网 发布:linux下切换oracle命令 编辑:程序博客网 时间:2024/04/29 06:37
#include <stdio.h>
#include <string.h>
/*
题目以26个大写字母为结点值,可以建立一个26*2的二维数组 表示结点以及结点的左右结点
若只有一个结点,则判断两根是否相同
若有多节点,则先将前一棵树的结点的左右结点赋给对应的结点,
再判断后一棵树的左右结点值在对应的结点是否能找到
*/
struct cow
{
char date,l,r;
}co[11];
int f1(int i)
{
if(co[i].l=='-')return 0;
return co[co[i].l-'0'].date;
}
int f2(int i)
{
if(co[i].r=='-')return 0;
return co[co[i].r-'0'].date;
}
void pt(char t[26][2],int n)
{
for(int i=0;i<n;i++)
{
int l=f1(i),r=f2(i);
if(l!=t[co[i].date-'A'][0]&&l!=t[co[i].date-'A'][1])
{
printf("No\n");
return;
}
if(r!=t[co[i].date-'A'][0]&&r!=t[co[i].date-'A'][1])
{
printf("No\n");
return;
}
}
printf("Yes\n");
}
int main()
{
char t[26][2];
memset(t,0,sizeof(t));
int n,m;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf(" %c %c %c",&co[i].date,&co[i].l,&co[i].r);
for(int i=0;i<n;i++)
{
if(co[i].l!='-')t[co[i].date-'A'][0]=co[co[i].l-'0'].date;
if(co[i].r!='-')t[co[i].date-'A'][1]=co[co[i].r-'0'].date;
}
char a;
if(n==1)a=co[0].date;
scanf("%d",&m);
for(int i=0;i<m;i++)
scanf(" %c %c %c",&co[i].date,&co[i].l,&co[i].r);
if(n!=m)printf("No\n");
else
{
if(m==1)
{
if(co[0].date!=a)printf("No\n");
else printf("Yes\n");
}
else
pt(t,n);
}
return 0;
}
#include <string.h>
/*
题目以26个大写字母为结点值,可以建立一个26*2的二维数组 表示结点以及结点的左右结点
若只有一个结点,则判断两根是否相同
若有多节点,则先将前一棵树的结点的左右结点赋给对应的结点,
再判断后一棵树的左右结点值在对应的结点是否能找到
*/
struct cow
{
char date,l,r;
}co[11];
int f1(int i)
{
if(co[i].l=='-')return 0;
return co[co[i].l-'0'].date;
}
int f2(int i)
{
if(co[i].r=='-')return 0;
return co[co[i].r-'0'].date;
}
void pt(char t[26][2],int n)
{
for(int i=0;i<n;i++)
{
int l=f1(i),r=f2(i);
if(l!=t[co[i].date-'A'][0]&&l!=t[co[i].date-'A'][1])
{
printf("No\n");
return;
}
if(r!=t[co[i].date-'A'][0]&&r!=t[co[i].date-'A'][1])
{
printf("No\n");
return;
}
}
printf("Yes\n");
}
int main()
{
char t[26][2];
memset(t,0,sizeof(t));
int n,m;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf(" %c %c %c",&co[i].date,&co[i].l,&co[i].r);
for(int i=0;i<n;i++)
{
if(co[i].l!='-')t[co[i].date-'A'][0]=co[co[i].l-'0'].date;
if(co[i].r!='-')t[co[i].date-'A'][1]=co[co[i].r-'0'].date;
}
char a;
if(n==1)a=co[0].date;
scanf("%d",&m);
for(int i=0;i<m;i++)
scanf(" %c %c %c",&co[i].date,&co[i].l,&co[i].r);
if(n!=m)printf("No\n");
else
{
if(m==1)
{
if(co[0].date!=a)printf("No\n");
else printf("Yes\n");
}
else
pt(t,n);
}
return 0;
}
0 0
- PTA 数据结构与算法题目集(中文)5-3 树的同构 (25分)
- PTA数据结构与算法题目集(中文)4-9 二叉树的遍历 (25分)
- PTA 数据结构与算法题目集(中文)5-6 列出连通集 (25分)
- PTA 数据结构与算法题目集(中文)5-5 堆中的路径 (25分)
- PTA 数据结构与算法题目集(中文)5-9 旅游规划 (25分)
- PTA 数据结构与算法题目集(中文)5-8 哈利·波特的考试 (25分)
- PTA 数据结构与算法题目集(中文)5-4 是否同一棵二叉搜索树 (25分)
- PTA数据结构与算法题目集(中文)4-5 链式表操作集 (20分)
- PTA 数据结构与算法题目集(中文)5-7 六度空间 (30分)
- PTA 数据结构与算法题目集(中文)5-10 公路村村通 (30分)
- PTA 数据结构与算法题目集(中文)5-11 关键活动 (30分)
- PTA数据结构与算法题目集(中文)4-8 求二叉树高度 (20分)
- PTA数据结构与算法题目集(中文)4-12 二叉搜索树的操作集 (30分)
- PTA数据结构与算法题目集(中文)4-3 求链式表的表长 (10分)
- PTA数据结构与算法题目集(中文)4-2 顺序表操作集 (20分)
- PTA数据结构与算法题目集(中文)4-1 单链表逆转 (20分)
- PTA数据结构与算法题目集(中文)4-10 二分查找 (20分)
- PTA数据结构与算法题目集(中文)4-6 带头结点的链式表操作集 (20分)
- 1996年分区联赛提高组之四 砝码称重
- 大话数据结构十:字符串的模式匹配(BF算法)
- mysql基本操作指令(一)
- UVA11988(破损键盘) 使用数组模拟链表插入
- 浅谈“用力不用脑“
- PTA 数据结构与算法题目集(中文)5-3 树的同构 (25分)
- SparseArray替代HashMap来提高性能
- 云主机挂盘步骤
- 安卓移动逆向(四)-Smail_HelloWorld
- 和菜鸟一起学linux之DBUS基础学习记录
- P1150 Peter的烟
- 僵尸进程与孤儿进程
- VS2012编译调试WDM驱动(KdPrint无调试信息 win7无调试信息)
- 类的无参