c语言实现判断两颗树是否同构
来源:互联网 发布:火车票造假图片软件 编辑:程序博客网 时间:2024/06/05 17:13
在本题中认为如果两个树左右子树交换可以相同,也被认为是同构树。
对应输入格式为:4(总结点数)
A - 1
B 2 3
C - -
D - -
#include <stdio.h>#define Tree int#define Null -1#define MAXSIZE 10struct Node{char Element;Tree Left;Tree Right;}T1[MAXSIZE], T2[MAXSIZE];Tree BuildTree(struct Node T[]){int N, i, Root;char ch, cl, cr;scanf("%d", &N);ch = getchar();int Check[N];for(i = 0; i < N; i++) Check[i] = 0;//为了标记根节点 ,因为没有节点指向根节点 for(i = 0; i < N; i++){scanf("%c %c %c", &T[i].Element, &cl, &cr);ch = getchar();if(cl != '-'){T[i].Left = cl - '0';Check[T[i].Left] = 1;}elseT[i].Left = Null;if(cr != '-'){T[i].Right = cr - '0';Check[T[i].Right] = 1;}elseT[i].Right = Null;}for(i = 0; i < N; i++)//遍历找到根节点 if(Check[i] == 0)break;Root = i;return Root;}int Isomorphic(Tree R1, Tree R2){//两树都为空 if(R1 == Null && R2 == Null)return 1;//空树和非空树if((R1 == Null && R2 != Null) || (R1 != Null && R2 == Null))return 0;//两树的根节点不一样if(T1[R1].Element != T2[R2].Element)return 0;//若过两树的左子树都空,判断右子树是否一样if(T1[R1].Left == Null && T2[R2].Left == Null)return Isomorphic(T1[R1].Right, T2[R2].Right);//若两树的左子树不空,并且左子树的结点元素都一样,判断左右子树是否一样if((T1[R1].Left != Null && T2[R2].Left != Null) && (T1[T1[R1].Left].Element == T2[T2[R2].Left].Element))return Isomorphic(T1[R1].Left, T2[R2].Left) && Isomorphic(T1[R1].Right, T2[R2].Right);else//否则 判断两树是否同构 return Isomorphic(T1[R1].Left, T2[R2].Right) && Isomorphic(T1[R1].Right, T2[R2].Left);}int main(){Tree R1, R2;R1 = BuildTree(T1);R2 = BuildTree(T2);if(Isomorphic(R1, R2)) printf("Yes");elseprintf("No");return 0;}
0 0
- c语言实现判断两颗树是否同构
- 判断两棵树是否是同构的C语言
- 判断数是否同构
- C语言实现非递归的比较两个二叉树是否同构
- 判断二叉树是否同构
- c语言实现判断一个数是否是素数
- C语言实现判断所输入字符串是否为回文
- 判断表达式括号是否匹配,C语言堆栈实现
- C语言 判断是否素数
- poj 1635 判断树是否同构
- leet code判断字符串是否同构
- 判断两棵二叉树是否同构
- 判断二叉树是否同构3.13
- LeetCode-Isomorphic Strings:判断两个字符串是否同构(hashtable实现)
- C语言判断文件是否存在
- 【转】C语言判断文件是否存在
- C语言判断文件是否存在
- C语言判断目录是否存在
- Android之TextView动态设置图片
- 详细构建工具配置文件、构建工具gulp、包管理工具bower的使用。
- POJ3169差分约束
- 51nod1268和为K的组合(枚举)
- SpringBoot的RabbitMQ消息队列: 一、消息发送接收第一印象
- c语言实现判断两颗树是否同构
- 使用AS编译时,报Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build
- Spring IOC的个人理解及Spring对bean的装配
- X86架构服务器
- 爬ip库
- Ubuntu16.04.1 安装Nginx
- HDU 3635 ( Dragon Balls)
- 获取手机相册图片显示并获取路径
- Spark集群环境的搭建