SDUT OJ 数据结构实验之二叉树一:树的同构
数据结构实验之二叉树一:树的同构
Problem Description
给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。

图1

图2
现给定两棵树,请你判断它们是否是同构的。
Input
注意:题目保证每个结点中存储的字母是不同的。
Output
Sample Input
8
A 1 2
B 3 4
C 5 -
D - -
E 6 -
G 7 -
F - -
H - -
8
G - 4
B 7 6
F - -
A 5 1
H - -
C 0 -
D - -
E 2 -
Sample Output
Yes
Hint
题意理解
给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换 就变成T2,则我们称两棵树是“同构”的。
此题用静态链表的思路来解,也就是用数组来模拟链表原理建立二叉树
错误代码!!检查错误!!
#include <stdio.h>
#include <stdlib.h>
#define MaxTree 10
#define Null -1
struct TreeNode
{
char c;
int lt;
int rt;
} T1[MaxTree], T2[MaxTree];
int BuildTree(struct TreeNode *T)
{
int i, N, root;
char cl, cr;
int check[100];
scanf("%d", &N);
if(N)
{
for(i=0; i<N; i++) check[i] = 0;
for(i=0; i<N; i++)
{
scanf("%c %c %c", &T[i].c, &cl, &cr);
getchar();
if(cl != '-')
{
T[i].lt = cl - '0';
check[T[i].lt] = 1;
}
if(cl == '-') T[i].lt = Null;
if(cr != '-')
{
T[i].rt = cr - '0';
check[T[i].rt] = 1;
}
if(cr == '-') T[i].rt = Null;
}
for(i=0; i<N; i++)
if(!check[i]) break;
root = i;
}
return root;
}
int Isomorphic ( int R1, int R2 )
{
if ( (R1==Null )&& (R2==Null) )
return 1;
if ( ((R1==Null)&&(R2!=Null)) || ((R1!=Null)&&(R2==Null)) )
return 0;
if ( T1[R1].c != T2[R2].c )
return 0;
if( ( T1[R1].lt == Null )&&( T2[R2].lt == Null ) )
return Isomorphic( T1[R1].rt, T2[R2].rt );
if ( ((T1[R1].lt!=Null)&&(T2[R2].lt!=Null))&& ((T1[T1[R1].lt].c)==(T2[T2[R2].lt].c)) )
return ( Isomorphic( T1[R1].lt, T2[R2].lt ) && Isomorphic( T1[R1].rt, T2[R2].rt ) );
else
return ( Isomorphic( T1[R1].lt, T2[R2].rt) && Isomorphic( T1[R1].rt, T2[R2].lt ) );
}
int main()
{
int R1, R2;
R1 = BuildTree(T1);
R2 = BuildTree(T2);
if (Isomorphic(R1, R2)) printf("Yes\n");
else printf("No\n");
return 0;
}
SDUT OJ 数据结构实验之二叉树一:树的同构的更多相关文章
- SDUT OJ 数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...
- SDUT OJ 数据结构实验之二叉树七:叶子问题
数据结构实验之二叉树七:叶子问题 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...
- SDUT OJ 数据结构实验之二叉树六:哈夫曼编码
数据结构实验之二叉树六:哈夫曼编码 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- SDUT OJ 数据结构实验之二叉树五:层序遍历
数据结构实验之二叉树五:层序遍历 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...
- SDUT OJ 数据结构实验之二叉树四:(先序中序)还原二叉树
数据结构实验之二叉树四:(先序中序)还原二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem ...
- SDUT OJ 数据结构实验之二叉树三:统计叶子数
数据结构实验之二叉树三:统计叶子数 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- SDUT OJ 数据结构实验之二叉树二:遍历二叉树
数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- SDUT 3340 数据结构实验之二叉树一:树的同构
数据结构实验之二叉树一:树的同构 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 给定两棵树 ...
- SDUT 3345 数据结构实验之二叉树六:哈夫曼编码
数据结构实验之二叉树六:哈夫曼编码 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 字符的编 ...
随机推荐
- Stall Reservations(贪心+优先队列)
Description Oh those picky N (1 <= N <= 50,000) cows! They are so picky that each one will onl ...
- uboot启动正常,加载内核kernel启…
先说现象吧:uboot能够正常启动,不过在kernel启动时却出现起不了的现象,停在这里 Uncompressing Linux.................................... ...
- jdk环境变量一键设置 管理員运行
退出360等杀毒软件 本机win10 其他环境自测.参考了网上代码修改. @echo off rem dss color 02 mode con cols=70 lines=30 title JDK ...
- 敏捷软件开发Note
[敏捷原则] 1.我们最优先要做的是通过尽早的.持续的交付有价值的软件为使客户满意. 初期交付的系统中所包含的功能越少,最终交付的系统的质量就越高.交付的越频繁,最终的产品质量就越高.敏捷实践会说早地 ...
- codeforce 457DIV2 B题
题意: 题目给出两个整数n,k,(n<=10^18,k<=10^5),求一个含有k个整数的序列,要求以2为底,以序列内数字为幂的和为n,其中序列内最大的数最小,若有多个序列满足条件,输出 ...
- libevent源码深度剖析九
libevent源码深度剖析九 ——集成定时器事件 张亮 现在再来详细分析libevent中I/O事件和Timer事件的集成,与Signal相比,Timer事件的集成会直观和简单很多.Libevent ...
- 575. Distribute Candies 平均分糖果,但要求种类最多
[抄题]: Given an integer array with even length, where different numbers in this array represent diffe ...
- 【转】Provisional headers are shown
在chrome开发者工具的 Network 面板中,某些请求头后面会跟着下面这行文字: Provisional headers are shown 这种请求实际上根本没有产生,对应的请求头当然也不应该 ...
- hdu 4741 Save Labman No.004 (异面直线的距离)
转载学习: #include <cstdio> #include <cstdlib> #include <cstring> #include <algorit ...
- 黑盒测试实践-任务进度-Day02
使用工具 selenium 小组成员 华同学.郭同学.穆同学.沈同学.覃同学.刘同学 任务进度 在经过了昨天的基本任务分配之后,今天大家就开始了各自的内容,以下是大家任务的进度情况汇总. 华同学(任务 ...