C语言判断两字符串同构,c语言实现判断两颗树是否同构

在本题中认为如果两个树左右子树交换可以相同,也被认为是同构树。

3b94679dbda0f5d6117274dabe464e1a.png

bcc9e7572c795e54626f9666938f248c.png

382536.html

对应输入格式为:4(总结点数)

A - 1

B 2 3

C - -

D - -

#include

#define Tree int

#define Null -1

#define MAXSIZE 10

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

}

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] == 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");

else

printf("No");

return 0;

}

0e92251230b48954aee04856c71cdee3.png

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

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

相关文章

C语言常量类型及名称,菜鸟带你入门C语言|基本数据类型之常量

常量在程序中&#xff0c;有些数据是不需要改变的&#xff0c;也是不能改变的&#xff0c;因此&#xff0c;我们把这些不能改变的固定值称为常量。如下图中的“5”、“A”、“Good”&#xff0c;这些在程序执行过程中是一直保持不变的&#xff0c;他们就是常量。printf的作用是…

Android TabHost中实现标签的滚动以及一些TabHost开发的奇怪问题

最近在使用TabHost的时候遇到了一些奇怪的问题&#xff0c;在这里总结分享备忘一下。 首先说一点TabActivity将会被FragmentActivity所替代&#xff0c;但是本文中却是使用的TabActivity。 下面说说本程序能够实现的功能&#xff1a; 实现TabHost中的标题栏能够横向滚动&#x…

tl wn322g linux驱动下载,怎样才能装好tl_wn322G+V2.0版USB无线网卡的Linux驱动

怎样才能装好tl_wn322GV2.0版USB无线网卡的Linux驱动tl_wn322G 2.0版无线网卡采用的是Atheros 的AR9271方案&#xff0c;我尝试了用ndiswrapper-1.55在linux下安装该无线网卡的Windows驱动&#xff0c;安装windows版的驱动时&#xff0c;用ndiswrapper -l &#xff0c;显示为错…

20151022作业

中级学员&#xff1a;2015年10月22日作业一、采购管理1、采购管理的主要过程&#xff1b;答&#xff1a;采购管理包括如下几个过程。(1)编制采购计划。决定采购什么&#xff0c;何时采购&#xff0c;如何采购。(2)编制询价计划。记录项目对于产品、服务或成果的需求&#xff0c…

editplus 快捷键

shift i 减少缩进 tab 增加缩进 ctrl shift f 使用代码折叠功能转载于:https://www.cnblogs.com/zztinglan/p/4277616.html

Spring + Dubbo + zookeeper (linux) 框架搭建

2019独角兽企业重金招聘Python工程师标准>>> dubbo简介 节点角色说明&#xff1a; Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服务的调用次调和调用时间的监控中心。 Container: …

c语言 函数编程四个数相加,C语言第四章课后编程题

1.编写程序&#xff0c;从键盘上输入4个整数&#xff0c;输出最小值。此题较为简单&#xff0c;只需定义一个桥梁最小值min就可以来着次比较他们的大小。2.编写一个程序&#xff0c;从键盘输入一个四位整数n&#xff0c;输出它的各位数字之和。例如n1308&#xff0c;则输出12&a…

[raywenderlich教程]

非常详细的图文入门教程http://www.raywenderlich.com/81879/storyboards-tutorial-swift-part-1 因为太长了 所以只放一些我觉得很有用的内容的翻译 The single View Controller you defined was set as the Initial View Controller – but how did the app load it? Take a…

iOS开发-XMPP

介绍一下XMPP?有什么优缺点吗?
XMPP:基于XML的点对点的即时通讯协议.XMPP协议是公开的,XMPP具有良好的拓展性,安全性.缺点是丢包率比较高.

c语言scanf附加格式*,C语言的scanf语句格式

满意答案pihiac2014.09.05采纳率&#xff1a;45% 等级&#xff1a;7已帮助&#xff1a;460人scanf语句的一般格式如下&#xff1a;scanf("格式字符串", 地址&#xff0c;…);scanf语句用"格式字符串"控制键盘读入的方式。"格式字符串"中一般只…

分析器错误

--提示 行 1: <% Application Codebehind"Global.asax.cs" Inherits"SDX.HR.RMS.MvcApplication" Language"C#" %> 说明&#xff1a;添加了的东西还原之后问题就没有了 --提示其他信息: 在向服务器发送请求时发生传输级错误。 (provider: …

YUV格式像素

转自&#xff1a;http://blog.csdn.net/grow_mature/article/details/9004548 一幅彩色图像的基本要素是什么&#xff1f; 说白了&#xff0c;一幅图像包括的基本东西就是二进制数据&#xff0c;其容量大小实质即为二进制数据的多少。一幅1920x1080像素的YUV422的图像&#xff…

mysql c语言教程,C语言调用mysql快速教程(精华篇).pdf

C语言调用mysql快速教程(精华篇).pdf&#xff0c;使用 语言操作 之前&#xff0c;先在 里头创建一个数据库&#xff0c;一个表&#xff0c;在表里头添加1 c mysql mysql数据如下&#xff1a;创建数据库&#xff0c;库名为 cusemysql:mysql create database cusemysql;创建表 表…

perl学习之:编译、执行与内存关系(转)

1、所谓在编译期间分配空间指的是静态分配空间&#xff08;相对于用new动态申请空间&#xff09;&#xff0c;如全局变量或静态变量&#xff08;包括一些复杂类型的 常量&#xff09;&#xff0c;它们所需要的空间大小可以明确计算出来&#xff0c;并且不会再改变&#xff0c;因…

生命游戏c语言代码easy,c++生命游戏源码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼glViewport( 0, 0, width, height );glMatrixMode( GL_PROJECTION );glLoadIdentity( );}//程序入口int main(int argc, char *argv[]){//随机生成细胞的状态MapRand();std::cout<//SDL初始化const SDL_VideoInfo* info NULL;i…

从零开始学android开发-布局中 layout_gravity、gravity、orientation、layout_weight

线性布局中&#xff0c;有 4 个及其重要的参数&#xff0c;直接决定元素的布局和位置&#xff0c;这四个参数是 android:layout_gravity ( 是本元素相对于父元素的重力方向 ) android:gravity &#xff08;是本元素所有子元素的重力方向&#xff09; android:orientation &…

Thread详解

具体可参考&#xff1a;Java并发编程&#xff1a;Thread类的使用&#xff0c;这里对线程状态的转换及主要函数做一下补充。 一. 线程状态转换图 注意&#xff1a; 调用obj.wait()的线程需要先获取obj的monitor&#xff0c;wait()会释放obj的monitor并进入等待态。所以wait()/no…

mac怎么用终端编写c语言视频,【新手提问】有知道用mac终端编c语言的网络编程的人吗?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#include#include#include#define ECHOMAX 255int main(int argc,char *argv[]){ int sock;struct sockaddr_in echoServAddr;struct sockaddr_in echoClntAddr;unsigned short echoServPort;unsigned int…

Net框架下-ORM框架LLBLGen的简介(转载)

Net框架下-ORM框架LLBLGen的简介 http://www.cnblogs.com/huashanlin/archive/2015/02/12/4288522.html 官方网址&#xff1a;http://www.llblgen.com/转载于:https://www.cnblogs.com/wangjunwei/p/4290896.html

加强团队凝聚力建设方面采取的方法

加强团队凝聚力建设方面采取的方法主要有&#xff1a;1. 项目经理定期和团队成员进行单独沟通&#xff0c;了解成员对工作和个人职业发展的一些真实想法&#xff0c;使团队发展和个人发展两者相互促进&#xff0c;让团队成员感受到在做研发过程中个人技能的提高和个人成就感的增…