如果T1可以通过交换T1中(一些)节点的左右子节点来转换为T2,则T1和T2这两棵树是同构的。例如,图1中的两棵树是同构的,因为如果交换了A、B和G的子节点,而不是其他节点,则它们是相同的。给出一个多项式时间算法来判断两棵树是否同构。

如果T1和T2确实是同构的,函数应该返回1,如果不是,则返回0。

Sample program of judge:

#include <stdio.h>
#include <stdlib.h>typedef char ElementType;typedef struct TreeNode *Tree;
struct TreeNode {ElementType Element;Tree  Left;Tree  Right;
};Tree BuildTree(); /* details omitted */int Isomorphic( Tree T1, Tree T2 );int main()
{Tree T1, T2;T1 = BuildTree();T2 = BuildTree();printf(“%d\n”, Isomorphic(T1, T2));return 0;
}/* Your function will be put here */

int Isomorphic( Tree T1, Tree T2 )
{if(!T1&&!T2)//如果两棵树都是空树,两棵树同构return 1;if(!T1&&T2)  //一棵树为空一棵树不为空,不同构return 0;if(T1&&!T2)return 0;if(T1->Element!=T2->Element) //两棵树的数据不同,不同构return 0;if(!T1->Left&&!T2->Left)//两棵树的左子树都为空,判断右子树是不是同构return Isomorphic(T1->Right,T2->Right);//两棵树都有左子树,并且数据都相等,判断两个书是否同构if((T1->Left&&T2->Left)&&(T1->Left->Element==T2->Left->Elemrnt))return Isomorphic(T1->Left,T2->Left)&&Isomorphic(T1->Right,T2->Right);else//如果两棵树左子树(一个空一个不空或者都不空)并且数据不一样,那么判断第一棵树的左(右)儿子是否跟第二棵树的右(左)儿子同构return Isomorphic(T1->Left,T2->Right)&&Isomorphic(T1->Right,T2->Left);}

Isomorphic:二叉树同构相关推荐

  1. 递归法进行二叉树同构判定

    #include<stdio.h> #define MaxTree 100 #define ElementType char #define Tree int//定义一个树的结构体,这里采 ...

  2. 判断两棵二叉树是否同构,三种实现方式(递归、队列、堆栈)

    一.同构的概念: 给定两棵二叉树 T1 和 T2,如果T2可以通过若干次左右孩子互换就变成T1,那么我们称这两棵树是同构的 例1:下图两棵树同构,因为对T2,交换A左右孩子:交换B左右孩子,交换G左右 ...

  3. 树的同构(c语言静态链表实现)

    题目 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A.B.G的左右孩子 ...

  4. 2.3 树的同构(树,c)

    树的同构 树的同构 输入格式: 输出格式: 输入样例1(对应图1): 输出样例1: 输入样例2(对应图2): 输出样例2: 题意理解 输入两棵二叉树的信息,判断是否同构(对应图1) 求解思路 二叉树表 ...

  5. 03-树1 树的同构

    题目 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A.B.G的左右孩子 ...

  6. 数据结构(三)—— 树(4):树的同构

    数据结构系列内容的学习目录→\rightarrow→浙大版数据结构学习系列内容汇总.   题意理解: 给定两棵树T1和T2.如果T1可以通过若干次左右子结点互换就变成T2,则我们称两棵树是" ...

  7. 树根c语言,03-树1 树的同构 (C语言链表实现)

    #include #include #include #include typedef char ElemType; typedef struct BinTree { ElemType data; s ...

  8. 数据结构和算法面试题系列—二叉树面试题汇总

    这个系列是我多年前找工作时对数据结构和算法总结,其中有基础部分,也有各大公司的经典的面试题,最早发布在CSDN.现整理为一个系列给需要的朋友参考,如有错误,欢迎指正.本系列完整代码地址在 这里. 0 ...

  9. 六大类二叉树面试题汇总解答

    0 概述 继上一篇总结了二叉树的基础操作后,这一篇文章汇总下常见的二叉树相关面试题,主要分为判断类.构建类.存储类.查找类.距离类.混合类这六类大问题. 本文所有代码 https://github.c ...

最新文章

  1. FPGA In/Out Delay Timing Constaint
  2. MyBatis知多少(12)私有数据库
  3. hardnet68尝试
  4. ftp连接报错:Windows无法访问此文件夹
  5. 合作分享还是独占独食?阿里健康、京东健康走出了两条不同的路
  6. 中医科学院临基所携手第四范式助力抗疫工作
  7. TreeList右键菜单功能
  8. SAP Spartacus i18n 的文本,和翻译相关的话题:internationalization
  9. react hooks使用_如何开始使用React Hooks:受控表格
  10. 多维度创新打造领先阿里云技术生态
  11. 苹果x屏幕出现一条绿线_部分用户反映苹果 iPhone 12 屏幕出现划痕 - iPhone 12
  12. 深度神经网络反向传播算法
  13. 小马哥讲Spring核心编程思想 - 第二章 重新认识IoC
  14. CMMI基础知识扫盲 笔记
  15. 字符串String实战之商品对象缓存管理之新增与获取详情
  16. 创作焦虑之下,红人大V怎么看微博?
  17. unix服务器日志文件,UNIX 系统日志
  18. MarkDown图片缩放
  19. poj--1625Censored!+AC自动机上的dp+大数
  20. 分析复联系列电影台词,看看每个英雄说得最多的词是什么

热门文章

  1. Android 辅助服务实战-游戏点击器
  2. 有关获取并保存微信头像到本地服务器
  3. Unity Shader 扇形进度条
  4. 投资组合业绩评价指标-夏普测度、特雷纳测度、詹森测度以及信息与卡玛比率...
  5. 全球程序员收入出炉!北京收入排入全球第十
  6. 本地主机Xshell连接虚拟机Linux CentOS7
  7. 【计科快速入门】五、算术逻辑单元
  8. [语音识别] 单音素、三音素、决策树
  9. 计算机维护系统Win8PE,Win8PE x86应急维护系统BIOS-MBR硬盘版
  10. 社会心理学 David G. Myers