7-3 树的同构 (25 分)(思路加详解)来呀baby!!!!!!!!

一:题目

7-3 树的同构 (25 分)
给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。

fig1.jpg
图1

图2
现给定两棵树,请你判断它们是否是同构的。

输入格式:
输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点的编号。如果孩子结点为空,则在相应位置上给出“-”。给出的数据间用一个空格分隔。注意:题目保证每个结点中存储的字母是不同的。

输出格式:
如果两棵树是同构的,输出“Yes”,否则输出“No”。

输入样例1(对应图1):

8
A 1 2
B 3 4
C 5 -
D - -
E 6 -
G 7 -
F - -
H - -
8
G - 4
B 7 6
F - -
A 5 1
H - -
C 0 -
D - -
E 2 -

输出样例1:

Yes

输入样例2(对应图2):

8
B 5 7
F - -
A 0 3
C 6 -
H - -
D - -
G 4 -
E 1 -
8
D 6 -
B 5 -
E - -
H - -
C 0 2
G - 3
F - -
A 1 4

输出样例2:

No

二:思路

思路:先建树,建完树后进行判断
判断是否同构的依据:
1.判断根结点是否为空,若两个根结点都为空则是同构树;如果一个为空一个不为空则不是同构树
2.两个根结点都存在,但是对应的数值不同,不是同构树
3.判断两个根结点的左右子树是否相同(用递归进行判断)

三:上码

/**思路:先建树,建完树后进行判断 判断是否同构的依据:1.判断根结点是否为空,若两个根结点都为空则是同构树;如果一个为空一个不为空则不是同构树2.两个根结点都存在,但是对应的数值不同,不是同构树3.判断两个根结点的左右子树是否相同(用递归进行判断) */
#include<bits/stdc++.h>
using namespace std;typedef struct Node* Ptr;
struct Node{char data;int left;int right; 
}tree1[20],tree2[20];int createTree(struct Node tree[]){int N;cin >> N;int sonRoot[200] = {0}; //记录那些结点作为子结点出现 for(int i = 0; i < N; i++){char a,b,c;cin >> a >> b >> c;tree[i].data = a;if(b != '-'){tree[i].left = b - '0';//将char类型转换成int类型sonRoot[b - '0'] = 1; }else{tree[i].left = -1;//空树赋值为-1 }if(c != '-'){tree[i].right = c - '0';sonRoot[c - '0'] = 1;}else{tree[i].right = -1;} }int root = -1;//初始化根节点for(int i = 0; i < N; i++){if(sonRoot[i] == 0){//除了根节点 其他都已经赋值为 1 root = i;}} 	return root; 
}bool judge(int root1,int root2){if(root1 == -1 && root2 == -1){return true;}else if( root1 == -1 && root2 != -1 || root1 != -1 && root2 == -1){return false;}else if(tree1[root1].data != tree2[root2].data){//俩个跟结点都存在,但数值不同 return false;	}else if (tree1[tree1[root1].left].data == tree2[tree2[root2].left].data) {//如果左子树的值相等则判断右子树return judge(tree1[root1].right, tree2[root2].right);}else {//否则判断是否第二棵树是在第一课树左右子树调换之后得到的return judge(tree1[root1].left, tree2[root2].right)&& judge(tree1[root1].right, tree2[root2].left);}
} int main(){int root1 = createTree(tree1);int root2 = createTree(tree2);if(judge(root1,root2)){cout << "Yes";}else{cout << "No";}}

在这里插入图片描述

四:总结

这个码不是我自己写了,感觉好难,我是参考别人的!!!!!!!!!!!!!!! 加油Boby!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dapr微服务应用开发系列0:概述

题记&#xff1a;Dapr是什么&#xff0c;Dapr包含什么&#xff0c;为什么要用Dapr。Dapr是什么Dapr&#xff08;Distributed Application Runtime&#xff09;&#xff0c;是微软Azure内部创新孵化团队的一个开源项目&#xff0c;皆在解决微服务应用开发过程的一些共性问题。以…

c语言 大数相加,c/c++开发分享C语言计算大数相加的方法

c/c开发分享问题描述输入两个整数a和b&#xff0c;输出这两个整数的和。a和b都不超过100位。算法描述由于a和b都比较大&#xff0c;所以不能直接使用语言中的标准输入格式输入包括两行&#xff0c;第一行为一个非负整数a&#xff0c;第二行为一个非负整数b。两个整数都不超过10…

你以为.NET Core仅仅是开源跨平台?试试Docker,刷新你的认知!

2016 年微软发布了 .NET Core 1.0&#xff0c;可谓是平地起惊雷&#xff0c;因为微软终于开源和跨平台了。但是一直到19年12月份发布了.NET Core3.1&#xff0c;开源社区的威力才展现出来&#xff0c;3个月增加了100w开发者&#xff0c;才真正吸引大厂的关注。但你以为仅仅是因…

7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝!

一&#xff1a;题目 设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行&#xff0c;每行分别先给出多项式非零项的个数&#xff0c;再以指数递降方式输入一个多项式非零项系数和指数&#xff08;绝对值均为不超过1000的整数&#xff09;。数字间以空格分隔。 输…

c语言中注释部分二侧分界符为,C语言常见复习题(选择填空)及参考答案

C语言常见复习题及参考答案一、选择题1.下述标识符中&#xff0c;()是合法的用户标识符。A.A#CB.getchC.voidD.ab*2.在C语言中&#xff0c;字符型数据在内存中是以()形式存放的。A.原码B.BCD码C.反码D.ASCII码3.以下选项中不合法的用户标识符是()。A.abc.cB.fileC.MainD.PRONTF…

c语言的程序灵魂是什么,C语言 第二章 程序的灵魂--算法

《C语言 第二章 程序的灵魂--算法》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《C语言 第二章 程序的灵魂--算法(39页珍藏版)》请在人人文库网上搜索。1、第二章 程序的灵魂-算法,什么是程序? 计算机是机器-在求解某一问题时-需要有相应程序-程序是用计算机能够识…

Azure认知服务之表单识别器

认知服务Azure 认知服务的目标是帮助开发人员创建可以看、听、说、理解甚至开始推理的应用程序。Azure 认知服务中的服务目录可分为五大主要支柱类别&#xff1a;视觉、语音、语言、Web 搜索和决策。开发人员使用 Azure 认知服务能够轻松地将认知功能添加到其应用程序中。Azure…

c语言蓝桥杯矩阵乘法,蓝桥杯 基础练习 矩阵乘法

友情提示&#xff1a;此篇文章大约需要阅读 2分钟37秒&#xff0c;不足之处请多指教&#xff0c;感谢您的阅读。问题描述给定一个N阶矩阵A&#xff0c;输出A的M次幂(M是非负整数)例如&#xff1a;A 1 23 4A的2次幂7 1015 22输入格式第一行是一个正整数N、M(1<N<30, 0<…

配置文件中的数据库连接串加密了,你以为我就挖不出来吗?

一&#xff1a;背景1. 讲故事前几天在调试物联柜终端上的一个bug时发现 app.config 中的数据库连接串是加密的&#xff0c;因为调试中要切换数据库&#xff0c;我需要将密文放到专门的小工具上解密&#xff0c;改完连接串上的数据库名&#xff0c;还得再加密贴到 app.config 中…

c语言逻辑运算符编程,C语言之逻辑运算符详解

一 逻辑运算符&#xff1a;&&&#xff1a;逻辑与&#xff0c;读作并且表达式左右两边都为真&#xff0c;那么结果才为真口诀&#xff1a;一假则假||&#xff1a;逻辑或&#xff0c;读作或者表达式左右两边&#xff0c;有一个为真&#xff0c;那么结果就为真口诀&#x…

c语言函数指针数组用法,C语言 函数指针 函数指针数组的用法

前述&#xff1a;C语言的奥秘&#xff0c;博大精深&#xff0c;今天来回忆的分析函数指针&#xff0c;函数指针数组的用法。具体请见下面一个注册程序的实现。1 #include 2 #include 356 typedef void (*poniter_fun)(int); //定义一个函数指针78 typedef struct poniter_desc …

Dotnet Core Public API的安全实践

公开API的安全&#xff0c;其实更重要。一、API的安全作为一个Dotnet Core的老司机&#xff0c;写API时&#xff0c;能兼顾到API的安全&#xff0c;这是一种优雅。通常&#xff0c;我们会用认证来保证API的安全&#xff0c;无敌的Authorize能解决我们很多的问题。但是&#xff…

奇偶校验c语言ascii,奇偶校验(parity check)

parity check 奇偶校验[N] a check made of computer data to ensure that the total number of bits of value 1 (or 0) in each unit of information remains odd or even after transfer between a peripheral device and the memory or vice versa这个比较底层&#xff0c;…

基于.NetCore3.1系列 —— 日志记录之自定义日志组件

前言回顾&#xff1a;日志记录之日志核心要素揭秘在上一篇中&#xff0c;我们通过学习了解在.net core 中内置的日志记录中的几大核心要素&#xff0c;在日志工厂记录器(ILoggerFactory)中实现将日志记录提供器(ILoggerProvider)对象都可以集成到Logger对象组合中&#xff0c;这…

c语言glut打正方形,OpenGL绘制正方形并用键盘移动

准备工作&#xff1a;在OpenGL中&#xff0c;基本图形元素如点、线、折线和多边形都是由一个或多个顶点所定义。OpenGL的7种基本图元&#xff1a;WeChat77732bbab74bef94d9f34e151bce8b6e.pngWeChat26002917d9408c5eef2f9637246fd9a6.pngOpenGL绘制正方形与OpenGL绘制三角形类似…

.NET或.NET Core Web APi基于tus协议实现断点续传

【导读】前两天我采用技巧式方案基本实现大文件分片上传&#xff0c;这里只是重点在于个人思路和亲身实践&#xff0c;若在实际生产环境要求比较高的话肯定不行&#xff0c;仍存在一些问题需要深入处理&#xff0c;本文继续在之前基础上给出基于tus协议的轮子方案&#xff0c;本…

c语言 get网页,get c语言获取网页信息 - 下载 - 搜珍网

get.clinux_boa_cgic/linuxboacgic/boa移植/cgic详解.doclinux_boa_cgic/linuxboacgic/boa移植/etc/boa/boa.conflinux_boa_cgic/linuxboacgic/boa移植/etc/grouplinux_boa_cgic/linuxboacgic/boa移植/etc/passwdlinux_boa_cgic/linuxboacgic/boa移植/嵌入式boa服务器笔记.docl…

省钱攻略送上!戴尔官网OptiPlex商用台式机到手仅需2279元!速速抢购!

如何用最少的钱磕到性价比超优的设备&#xff1f;两三千元左右的价格能买到狠货吗&#xff1f;来戴尔小企业官网&#xff0c;助力业务在线&#xff0c;Slay全场&#xff01;粉丝额外宠粉福利1.关注公众号 2.通过戴尔官网客服采购电脑产品3.发送订单截图至公众号后台就会有机会…

c语言关闭控制台窗口,怎样可以屏蔽控制台程序的关闭按钮

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼//以前发过&#xff0c;再贴一次//-----------------------------------------------------#include "windows.h"#pragma comment(lib,"user32.lib")LPCRITICAL_SECTION lpDllLockNULL;#define CODE_MOV_LEN 5…

如何面对人生危机?

点击蓝字关注&#xff0c;回复“职场进阶”获取职场进阶精品资料一份一名读者提问&#xff1a;洋哥&#xff0c;我7年前从大厂出来&#xff0c;创业多年。连续失败&#xff0c;没买车也没房&#xff0c;女朋友也和我分手了&#xff0c;父母也对我失望至极。最近我开始焦虑、失眠…