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

#include

#include

#include

#include

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));

}

小白专场-树的同构-c语言实现&period;md

目录 一.题意理解 二.求解思路 2.1 二叉树表示 2.2 程序框架搭建 2.3 如何建二叉树 2.4 如何判别两二叉树同构 更新.更全的的更新网站,更有python. ...

【查找结构5】多路查找树&sol;B~树&sol;B&plus;树

在前面专题中讲的BST.AVL.RBT都是典型的二叉查找树结构,其查找的时间复杂度与树高相关.那么降低树高自然对查找效率是有所帮助的.另外还有一个比较实际的问题:就是大量数据存储中,实现查询这样一个实 ...

9-11-Trie树&sol;字典树&sol;前缀树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第9章  查找 - Trie树/字典树/前缀树(键树) ——-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ (严蔚 ...

HTTP协议漫谈 C&num;实现图(Graph&rpar; C&num;实现二叉查找树 浅谈进程同步和互斥的概念 C&num;实现平衡多路查找树&lpar;B树&rpar;

HTTP协议漫谈   简介 园子里已经有不少介绍HTTP的的好文章.对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲 ...

Tire树&lpar;字典树&rpar;

from:https://www.cnblogs.com/justinh/p/7716421.html Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,P ...

BZOJ 3110&colon; &lbrack;Zjoi2013&rsqb;K大数查询 &lbrack;树套树&rsqb;

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 ...

bzoj3262&colon; 陌上花开&lpar;树套树&rpar;

#include #include #include #include #i ...

bzoj3295&colon; &lbrack;Cqoi2011&rsqb;动态逆序对(树套树)

#include #include #include #include #i ...

随机推荐

Trapping Rain Water

Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...

&commat;ControllerAdvice

@ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强.让我们先看看@ControllerAdvice的实现: @Target(ElementTyp ...

基于&period;net mvc的校友录(三、实体模型实现)

实体模型设计 由于是实际开发,而且是时间比较紧的,所以,在开发实现过程中,总有一些对原计划的改动: AlumniBookModel数据库实体模型 这是主数据实体类,EF会根据此实体生成数据库,它的每一 ...

android 点击重新加载界面设计

在项目中经常会遇到这样的场合,用户点击了一个界面后要提示等待加载,最后有可能显示加载失败,点击屏幕再重试加载.下面是该实例的代码: layout: loading.xml <?xml versi ...

绑定下拉框时避免触发SelectedIndexChanged事件

在从数据库读取数据集绑定到下拉框时会立即触发其SelectedIndexChanged事件造成异常,可对其SelectedIndexChanged事件采取先解除后附加的方法解决. cmbXl_gt.V ...

Qt编程之实现在QFileDialog上添加自定义的widget

上网搜索找到的方法如下: http://www.qtforum.org/article/20841/how-to-add-a-qwidget-in-qfiledialog.html#post78422 ...

Oracle闪回详解

1.问题定义 闪回是dba做的工作.现在也可授权给某个用户. 闪回的定义:就是将用户错误的操作回恢到以前的状态.即使你的事务提交的commit. 如果你删除了一个表.Drop table(DDL) ...

OOP的五大原则

一:单一职责原则. 含义一方面是避免相同的职责分散到不同的类中:另一方面避免一个类承担太多职责. 二:接口隔离原则. 一个类对另一个类的依赖性应当建立在最小的接口上的. 就是定制化服务设计的原则. 三 ...

kivy 使用webview加载网页

from kivy.app import App from kivy.uix.widget import Widget from kivy.clock import Clock from jnius ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值