03-树1 树的同构 (C语言链表实现)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
typedef char ElemType;
typedef struct BinTree
{
ElemType data;
struct BinTree *left;
struct BinTree *right;
}BinTree;
bool TreeCmp(BinTree * a, BinTree * b); //判断a树与b树是否同构
BinTree * BinTree_new(int n);
int main()
{
int n;
scanf("%d", &n);
BinTree * a = BinTree_new(n);
scanf("%d", &n);
BinTree * b = BinTree_new(n);
bool flag = TreeCmp(a, b);
if (flag)
printf("Yes");
else
printf("No");
;
}
BinTree * BinTree_new(int n)
{
)
{
return NULL;
}
else
{
int i, li, ri;
ElemType c, lc, rc;
BinTree * T = (BinTree *)malloc(n * sizeof(BinTree));
bool *head = (bool *)malloc(n * sizeof(bool));
memset(head, true ,sizeof(head));
; i < n ; ++i )
{
scanf(" %c %c %c", &c, &lc, &rc);
li = lc-';
ri = rc-';
T[i].data = c;
if (lc != '-')
{
T[i].left = &T[li];
head[li] = false;
}
else
T[i].left = NULL;
if (rc != '-')
{
T[i].right = &T[ri];
head[ri] = false;
}
else
T[i].right = NULL;
}
//寻找树的树根(树根没有其它的结点指向它)
; i < n ; ++i )
if (head[i] == true)
break;
free(head);
return &T[i];
}
}
bool TreeCmp(BinTree * a, BinTree * b)
{
if (a == NULL && b == NULL)//两棵树都为空
return true;
if (a == NULL || b == NULL)//有一棵树为空
return false;
if (a->data != b->data)//树结点的值不相等
return false;
if (a->left == NULL && b->left == NULL)//两棵树的左子树都为空
return TreeCmp(a->right, b->right);//就比较右子树
//两棵树的左子树都不为空,且两个值相等就比较两棵树的子树
if (a->left != NULL && b->left != NULL &&(a->left->data == b->left->data))
return (TreeCmp(a->left,b->left)&&TreeCmp(a->right,b->right));
//交换后再比较
else
return (TreeCmp(a->left,b->right)&&TreeCmp(a->right,b->left));
}
03-树1 树的同构 (C语言链表实现)的更多相关文章
- 小白专场-树的同构-c语言实现.md
目录 一.题意理解 二.求解思路 2.1 二叉树表示 2.2 程序框架搭建 2.3 如何建二叉树 2.4 如何判别两二叉树同构 更新.更全的<数据结构与算法>的更新网站,更有python. ...
- 【查找结构5】多路查找树/B~树/B+树
在前面专题中讲的BST.AVL.RBT都是典型的二叉查找树结构,其查找的时间复杂度与树高相关.那么降低树高自然对查找效率是有所帮助的.另外还有一个比较实际的问题:就是大量数据存储中,实现查询这样一个实 ...
- 9-11-Trie树/字典树/前缀树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
课本源码部分 第9章 查找 - Trie树/字典树/前缀树(键树) ——<数据结构>-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ <数据结构-C语言版>(严蔚 ...
- HTTP协议漫谈 C#实现图(Graph) C#实现二叉查找树 浅谈进程同步和互斥的概念 C#实现平衡多路查找树(B树)
HTTP协议漫谈 简介 园子里已经有不少介绍HTTP的的好文章.对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲 ...
- Tire树(字典树)
from:https://www.cnblogs.com/justinh/p/7716421.html Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,P ...
- BZOJ 3110: [Zjoi2013]K大数查询 [树套树]
3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 6050 Solved: 2007[Submit][Sta ...
- BZOJ4170 极光(CDQ分治 或 树套树)
传送门 BZOJ上的题目没有题面-- [样例输入] 3 5 2 4 3 Query 2 2 Modify 1 3 Query 2 2 Modify 1 2 Query 1 1 [样例输出] 2 3 3 ...
- Atitit 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树 attilax理解与总结
Atitit 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树 attilax理解与总结 1.1. 树形结构-- 一对多的关系1 1.2. 树的相关术语: 1 1.3. 常见的树形结构 ...
- bzoj3262: 陌上花开(树套树)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- bzoj3295: [Cqoi2011]动态逆序对(树套树)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
随机推荐
- Servlet程序中玩验证码
验证码思想:所谓验证码就是产生若干随机数,存放到session中,然后在servlet中获取session中的该值与页面输入值相比较,进而判断正误. 产生验证码的方法: 随机数放在图片中,封装为一 ...
- MVC与WebForm的区别
在初步了解MVC后,发现很多人对于MVC和三层架构开发概念上会有很大的混淆,所以把这两天的学习笔记整理一下,分享给自己的同学们.同时也做一个小Demo,让没有接触过MVC开发的同学,能对MVC有一个简 ...
- tomcat 的优化配置
一.关于并发连接量的配置 在tomcat的server.xml配置文件中:将<Connector port="8080" protocol="HTTP/1.1&qu ...
- Java基础-服务器的发送和接收
package hanqi.test; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWri ...
- Building OpenCASCADE on Debian
Building OpenCASCADE on Debian eryar@163.com Abstract. When you are familiar with OpenCASCADE on Win ...
- Python标准模块--functools
1 模块简介 functools,用于高阶函数:指那些作用于函数或者返回其它函数的函数,通常只要是可以被当做函数调用的对象就是这个模块的目标. 在Python 2.7 中具备如下方法, cmp_to_ ...
- 【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- r.js结合gulp等于webpack(angular为例)
本人大学时玩dojo,开始了AMD模块化的不归路,工作后一直使用requirejs,感觉非常好.但是,近来随着react的火热,webpack成为了天下无敌的模块化工具,能做模块化,合并压缩,监视等, ...
- UWP开发之Mvvmlight实践三:简单MVVM实例开发(图文详解付代码)
在做MVVM各种框架对比之前,我觉得有必要先自己做一个简单的MVVM实现案例比较好,这样就可以看到自己实现的时候有那些不方便的地方.而各种框架又是怎么解决我们这些麻烦的. 案例介绍:用户登录画面,没有 ...
- JavaScript的全局变量与局部变量解析
一.JavaScript scope 的划分标准是function函数块,不是以 if.while.for来划分的 <script> function f1(){ alert(" ...