实例3-1 树的同构
来源:互联网 发布:微信扫二维码抽奖软件 编辑:程序博客网 时间:2024/06/03 22:36
#include<stdio.h>#include<stdlib.h>/*8A 1 2B 3 4C 5 -D - -E 6 -G 7 -F - -H - -8G - 4B 7 6F - -A 5 1H - -C 0 -D - -E 2 -*/// 二叉树的存储结构:结构数组,也叫静态链表#define ElementType char#define MaxSize 10#define Tree int#define Null -1struct TreeNode { ElementType Data; Tree Left; Tree Right;} Tree1[MaxSize], Tree2[MaxSize];// 建立二叉树Tree BuildTree(struct TreeNode T[]) { int N, i; char cl, cr; Tree Root = -1; scanf("%d\n", &N); int *check = (int*)malloc(N*sizeof(int)); if (N) { for (i = 0; i < N; i++) check[i] = 0; for (i = 0; i < N; i++) { scanf("\n%c %c %c\n", &T[i].Data, &cl, &cr); if (cl != '-') { T[i].Left = cl - '0'; check[T[i].Left] = 1; } else T[i].Left = Null; if (cr != '-') { T[i].Right = cr - '0'; check[T[i].Right] = 1; } else T[i].Right = Null; } for (i = 0; i < N; i++) { if (!check[i]) 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 (Tree1[R1].Data != Tree2[R2].Data) return 0; if (Tree1[R1].Left == Null && Tree2[R2].Left == Null) Isomorphic(Tree1[R1].Right, Tree2[R2].Right); if (Tree1[R1].Right == Null && Tree2[R2].Right == Null) Isomorphic(Tree1[R1].Left, Tree2[R2].Left); if ((Tree1[R1].Left != Null && Tree2[R2].Left != Null) && (Tree1[Tree1[R1].Left].Data == Tree2[Tree2[R1].Left].Data)) return Isomorphic(Tree1[R1].Left, Tree2[R2].Left) && Isomorphic(Tree1[R1].Right, Tree2[R2].Right); else return Isomorphic(Tree1[R1].Left, Tree2[R2].Right) && Isomorphic(Tree1[R1].Left, Tree2[R2].Right);}int main() { Tree tree1, tree2; tree1 = BuildTree(Tree1); tree2 = BuildTree(Tree2); if (Isomorphic(tree1, tree2)) printf("YES!\n"); else printf("NO!\n"); return 0;}
阅读全文
0 0
- 实例3-1 树的同构
- 5-3 树的同构
- 5-3 树的同构
- C++实例 同构数 求1000以内的同构数
- 03-树1 树的同构
- 03-树1 树的同构
- 树1——树的同构
- 03-树1 树的同构
- 03-树1 树的同构
- 03-树1 树的同构
- 03-树1 树的同构
- 03-树1 树的同构
- 03-树1 树的同构
- 03-树1 树的同构
- 03-树1 树的同构
- 03-树1 树的同构
- 03-树1 树的同构
- 03-树1 树的同构
- SQLServer备份为多个文件
- form表单文件上传方法
- react-native 获取网络状态
- storm的消息格式分析
- 如何实现一个高效的队列
- 实例3-1 树的同构
- jmeter 断言(检查点)
- AngularJS 中的Scope(作用域)
- SQLServer列转行
- 前端之怎么切片
- 关于msp
- 一些学习网站
- MAC下修改XAMPP里MySQL服务器的密码
- Java 反射(reflection)/注释(Annotation)/监听器(Listener)/装饰器(wrapper)/过滤器(Filter)一锅煮