判定两棵二叉树是否相似以及左右子树交换、层次编号
#include <iostream>
using namespace std;
#include <malloc.h>
#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2#define MAX_TREE_SIZE 100//二叉树的最大结点数
typedef char ElemType;
typedef int Status;typedef struct BiTNode{ElemType data;struct BiTNode *lchild,*rchild;//左右孩子指针
}BiTNode,*BiTree;//结点类型,指针类型int count=0;//CountLeaf函数用到的全局变量
BiTree CreateBiTree(BiTree &T)//按照先序序列建立二叉树的二叉链表
{//按先序次序输入二叉树中结点的值(一个字符),#表示空树//构造二叉链表表示的二叉树Tchar ch;scanf("%c",&ch);if(ch=='#')T = NULL;//(出口)else{if(!(T = (BiTNode *)malloc(sizeof(BiTNode))))//要一个二叉树结点exit(OVERFLOW);T -> data = ch;//生成根结点CreateBiTree(T->lchild);//构造左子树CreateBiTree(T->rchild);//构造右子树}return T;
}Status InorderTraverse(BiTree T)//采用二叉链表存储结构,中序遍历二叉树
{if(T==NULL){return ERROR;}else{InorderTraverse(T->lchild);//遍历左子树printf("%c",T->data);InorderTraverse(T->rchild);//遍历右子树}return OK;
}int Depth(BiTree T)//求二叉树深度
{int depthval,depthleft,depthright;if(!T)depthval = 0;else{depthleft = Depth(T->lchild);//求左子树深度depthright = Depth(T->rchild);//求右子树深度depthval = 1 + (depthleft > depthright ? depthleft : depthright);}return depthval;
}int CountLeaf(BiTree T)//需要在函数之前定义全局变量count
{if(T){if((!T->lchild)&&(!T->rchild)){count++;}else{CountLeaf(T->lchild);CountLeaf(T->rchild);}}return count;
}
void Exchange(BiTree T)
{BiTree p;if(T){p=T->lchild;T->lchild=T->rchild;T->rchild=p;Exchange(T->lchild);Exchange(T->rchild);}
}
Status Like(BiTree T1,BiTree T2)
{if((T1==NULL)&&(T2==NULL))return TRUE;else if((T1==NULL)||(T2==NULL))return FALSE;elsereturn (Like(T1->lchild,T2->lchild)) && (Like(T1->rchild,T2->rchild));
}
PreOrder(BiTree T,int i)
{if(T){T->data = 1;PreOrder(T->lchild,i+1);PreOrder(T->rchild,i+1);cout<<i;}}
/*void CountLeaf(BiTree T,int &count)
{if(T){if((!T->lchild)&&(!T->rchild))count++;CountLeaf(T->lchild,count);CountLeaf(T->rchild,count);}
}*/int main()
{BiTree T,T1,T2;int t,i;cout << "请按照先序方式输入二叉树T的结点元素;" << endl;CreateBiTree(T);getchar();cout << "创建成功的二叉树T中序序列为;" <<endl;InorderTraverse(T);cout << endl<<"此二叉树T的深度为:" <<Depth(T)<<endl;cout << "此二叉树T的叶子结点个数为:" <<CountLeaf(T)<<endl;/*cout<<count<<endl;*/Exchange(T);cout << "二叉树T所有结点的左右子树相互交换后的中序遍历为:" <<endl;InorderTraverse(T);cout<<"按先序遍历结点,各结点的层次编号为:"<<endl;PreOrder(T,1);cout <<endl<< "请输入需要判断是否相似的二叉树T1的结点元素:" <<endl;T1 = (BiTNode *)malloc(sizeof(BiTNode));T1=CreateBiTree(T);getchar();cout <<endl<< "请输入需要判断是否相似的二叉树T2的结点元素:" <<endl;T2 = (BiTNode *)malloc(sizeof(BiTNode));T2=CreateBiTree(T);t=Like(T1,T2);if(t==TRUE)cout<<"T2与T1相似!"<<endl;elsecout<<"T2与T1不相似!"<<endl;return 0;
}
相关文章:

[Tracking] KCF + KalmanFilter目标跟踪
基于KCF和MobileNet V2以及KalmanFilter的摄像头监测系统 简介 这是一次作业。Tracking这一块落后Detection很多年了,一般认为Detection做好了,那么只要能够做的足够快,就能达到Tracking的效果了,实则不然,现在最快的我…

.net wap强制输出WML
强制输出WML:在web.config添加下面内容<system.web>下<browserCaps><result type"System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version1.0.5000.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a"/><use var"HTTP_USER_…

Tomcat在Linux上的安装与配置
1.安装好linux系统,下载适合的 Tomcat(jdk)下载JDK与Tomcatjdk 下载Tomcat 下载参考地址:jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.htmltomcat下载地址:http://tomcat.apache.org /download-70.cgi…

上机实践 1 初识 Java
实验 1 一个简单的 Java 应用程序 一、实验目的 掌握开发 Java 应用程序的 3 个步骤:编写源文件、编译源文件和运行应用程序。 二、实验要求 1. 参照教材中的指导,使用网络课程中提供的链接下载并安装 JKD 并配置环境变量。 2. 编写一个简单的 Java…

论COSPLAY / 谨以此文纪念我暂短的Cos生涯
COSPLAY是什么COSPLAY这一名词是是英文Costume Play(服饰扮演)的缩写,从事COSPLAY相关活动的人员一般被称为COSPLAYER。目前流行的COSPLAY活动内容主要集中于通过服装、道具、饰品等扮演动漫作品中的人物角色,而从宽泛的意义上来说…

python 3下对stm32串口数据做解析
1、最近有个想做一个传感器数据实时显示的上位机,常规的数据打印太频繁了,无法直观的看出数据的变化。 python下的上位机实现起来简单一点,网上找了一些python界面Tkinter相关资料和python串口的demo.测试实现了简单的数据显示。 Mark 一下问…

《深入理解计算机系统》第八章——异常控制流知识点总结
课本习题: 8.11 #include <unistd.h> #include <stdio.h>int main(){int i;for(i0;i<2;i) fork();printf("hello\n");exit(0);}/** Result:* hello* hello* hello* hello*/ 8.12 #include <stdio.h> #include <unistd.h>vo…

vs2003复制一个web窗体,没有更改指向同一个cs 文件,引发大问题
今天我在原来的考试系统的出题模块中,input模块,因为增加的一个web窗体编译有问题,于是就复制了原来的启动项页面input,再改了名字为set1,然后在set1页面上删除了控件和代码,再把set1设置为启动项,谁知道问题出来了:因为两个aspx文件都是指向同一个CS文件,从他们的H…

8.29 对象?数组?
今天发现我的filter函数有问题,翻不了页,一直报错: 这是一个封装好的Array原型扩展函数。 /* Array 原型方法扩展 */(function() {$.extend(Array.prototype, {// 添加内容,比push多一个检查相同内容部分add: function(item) {if …

Nginx的作用
1、Nginx简介: 2、简介: Nginx是一个高性能的HTTP和反向代理服务器。 支持的操作系统众多,windows、linux、MacOSX 可实现负载均衡 Rewrite功能强大 电商架构大部分都采用NginxTomcat的架构 3、命令行使用: 三个命令:(…

(转)TabContainer要实现服务器端回传
TabContainer要实现服务器端回传,出来在后台实现 OnActiveTabChanged 事件外, 还需要在前台实现 OnClientActiveTabChanged 事件,这是关键。 <asp:UpdatePanel ID"UpdatePanel1"runat"server"ChildrenAsTriggers"true"><con…

python 获取脚本所在目录
pythonsys.path__file__abspathrealpath 平时写python经常会想获得脚本所在的目录,例如有个文件跟脚本文件放在一个相对的目录位置,那就可以通过脚本文件的目录找到对应的文件,即使以后脚本文件移到其他地方,脚本也基本不需要改动…

《深入理解计算机系统》第十章——系统级I/0
目录 10.1Unix I/O 10.2文件 10.3打开和关闭文件 10.4读和写文件 10.5用RIO包建壮地读写 10.6读取文件元数据 10.7读取目录内容 10.8共享文件 10.9 I/O重定向 10.10 标准I/O 10.1Unix I/O 在Linux中,一切皆为文件。 文件I/O函数-------打开文件、读文件…

终于完成了“微软”化
整整忙活了一个下午,基本上我的笔记本完成了可怕的“微软”化进程!是的,当我完成FOXMAIL中邮件向OUTLOOK2007的迁移后,在办公层面,已经完成“微软”化了。其实真的不想这样,但是想MS在独霸桌面后࿰…

C#创建Windows服务
利用VS.NET创建C# Windows服务在很多应用中需要做windows服务来操作数据库等操作,比如 (1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等 (2&#x…

《深入理解计算机系统》第七章——链接知识点总结
目录 7.1编译器驱动程序 7.2静态链接 7.3目标文件 7.4可重定位目标文件 7.5符号和符号表 7.6符号解析 • 静态库(.a archive files) 7.1编译器驱动程序 7.2静态链接 7.3目标文件 7.4可重定位目标文件 使用readelf -S查看hello.o 一个典型的ELF可重定位目标文件包含以下…
排序算法之直接插入排序
1、基本思想: 已知待排序列r[1...n],先将序列中的第一个记录看成是一个有序的子序列,然后从第二个记录起逐个进行插入,直至整个序列变成关键字非递减有序序列为止。 具体操作如下: (1)查找出r[i]在有序序列…

【代码片段】如何使用CSS来快速定义多彩光标
对于web开发中,我们经常都看得到需要输入内容的组件和元素,比如,textarea,或者可编辑的DIV(contenteditable) ,如果你也曾思考过使用相关方式修改一下光标颜色的,那么这篇技术小分享,你绝对不应…

如何划分155MSDH带宽
我们单位拟计划租用运营商155MSDH电路,由于我们单位应用业务较多,为了避免各业务之间相互影响,更好地分享带宽,根据各业务数据量的大小,分别赋予一定的带宽,使各业务在自己的带宽内传输,但不知选…

慕课袁春风老师《计算机系统基础》一二三部分练习题
2.2 1、下列几种存储器中,( A )是易失性存储器。 A. cache B. EPROM C. Flash Memory D. CD-ROM 2、下面有关半导体存储器组织的叙述中,错误的是( D )。 A. 存储器的核心部分是存储阵列,…

47种常见的浏览器兼容性问题大汇总
浏览器兼容性问题大汇总 JavaScript 31. HTML对象获取问题 32. const问题 33. event.x与event.y问题 34. window.location.href问题 35. frame问题 36. 模态和非模态窗口问题 37. firefox与IE的父元素(parentElement)的区别 38. document.formName.item(”itemName”) 问题 39.…
封装了一下我佛山人4.0 (支持vs2005)asp.net 页面验证
第一次写控件,拿“我佛山人4.0”开个刀,实际上也不算是什么控件,只是封装了一下,方便在asp.net中使用。 建议先看“我佛山人 4。0”文档。 声明:控件中参考了不少网上的源码,大家不要觉得眼熟BS人啊。注&am…

九章算法班L8 Array Number
转载于:https://www.cnblogs.com/sissie-coding/p/10295478.html

linux密码时效更改方法
密码时效 按目前的形势,已有更强大的硬件大大地缩短了利用自动运行的程序来猜测密码的时间。因此在UNIX系统中防止密码被***的别一方法就是要经常地改变密码。很多时候,用户却不改变密码。因此一种机制用来强制规律性的更改密码是合乎要求的。这种技术称…

YOLOv10训练自己的数据集
至此,整个YOLOv10的训练预测阶段完成,与YOLOv8差不多。欢迎各位批评指正。

安卓相对布局常用语句
不BB写在自己博客园看的舒服 RelativeLayout布局 android:layout_marginTop"25dip" //顶部距离 android:gravity"left" //空间布局位置 android:layout_marginLeft"15dip //距离左边距 // 相对于给定ID控件 android:layout_above 将该控件的底部置于…

Tomcat V6 Examples移植到Apusic V5.1
目标:将Tomcat V6的的例子Examples移植到Apusic V5.1上术语:Tomcat:只提供了WEB容器的开源服务器;Apusic:提供了完整的J2EE支持的商用服务器;%TOMCAT_HOME%:Tomcat安装目录%APUSIC_HOME%&#x…

Android 活动与活动间数据传递--登录注册页面
AndroidManifest.xml: <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"package"com.example.myapplica…

使用SVG中的Symbol元素制作Icon
前言 随着大屏幕分辨率的普及以及各种移动设备层出不穷的移动互联网时代的到来,我们在网站设计时更应该关心内容在各种设备上的阅读性和显示效果。我们都希望能在任何时间,任何设备上都能清楚的,高效的传递信息给用户。 而随着各种高清视网膜…

【JOURNAL】恭喜发财
刚写完上一条blog不久,南京城里开始响彻了鞭炮声,人见人爱、极具亲和力的财神来了。上海的一个朋友发短信来说那个国际化大都市也被对财神的膜拜感染得热闹喧天。这是好的。昨天给老婆表亲家的孩子压岁钱,对方说免了吧,我坚持让他…