8606 二叉树遍历的建设和运营

8606 二叉树遍历的建设和运营

时限:1000MS  内存限制:1000K

问题: 编程题   语言: 无限
叙述性说明

用二进制表示的名单二叉树结构:按第一个二进制序列,以便输入节点值(一个字符),'#'字符表示空树。构造二叉链表表示的二叉树T;再输出三种遍历序列。本题仅仅给出部分代码,请补全内容。


#include "stdio.h"
#include "malloc.h"
#define TRUE 1
#define FALSE 0
#define OK  1
#define ERROR  0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int  Status;typedef char  ElemType;
typedef struct BiTNode{ElemType data;struct BiTNode *lchild,*rchild;//左右孩子指针
} BiTNode,*BiTree;Status CreateBiTree(BiTree &T) {  // 算法6.4// 按先序次序输入二叉树中结点的值(一个字符)。’#’字符表示空树。// 构造二叉链表表示的二叉树T。

char ch; scanf("%c",&ch); if (ch=='#') T = NULL; else { if (!(T = (BiTNode *)malloc(sizeof(BiTNode)))) return ERROR; ________________________ // 生成根结点 _______________________ // 构造左子树 _________________________ // 构造右子树 } return OK; } // CreateBiTree Status PrintElement( ElemType e ) { // 输出元素e的值 printf("%c", e ); return OK; }// PrintElement Status PreOrderTraverse( BiTree T, Status(*Visit)(ElemType) ) { // 前序遍历二叉树T的递归算法,对每一个数据元素调用函数Visit。 //补全代码,可用多个语句 } // PreOrderTraverse Status InOrderTraverse( BiTree T, Status(*Visit)(ElemType) ) { // 中序遍历二叉树T的递归算法。对每一个数据元素调用函数Visit。 //补全代码,可用多个语句 } // InOrderTraverse Status PostOrderTraverse( BiTree T, Status(*Visit)(ElemType) ) { // 后序遍历二叉树T的递归算法,对每一个数据元素调用函数Visit。 //补全代码,可用多个语句 } // PostOrderTraverse int main() //主函数 { //补充代码 }//main




输入格式

第一行:输入一棵二叉树的先序遍历序列

输出格式

第一行:二叉树的先序遍历序列
第二行:二叉树的中序遍历序列
第三行:二叉树的后序遍历序列
输入例子

AB##C##
输出例子

ABC
BAC

BCA


答案:

/*构造二叉链表表示的二叉树:按先序次序输入二叉树中结点的值(一个字符),'#'字符表示空树,
构造二叉链表表示的二叉树T;再输出三种遍历序列。本题仅仅给出部分代码,请补全内容。*/
#include "stdio.h"
#include "malloc.h"
#define TRUE 1
#define FALSE 0
#define OK  1
#define ERROR  0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int  Status;typedef char  ElemType;
typedef struct BiTNode{ElemType data;struct BiTNode *lchild,*rchild;//左右孩子指针
} BiTNode,*BiTree;Status CreateBiTree(BiTree &T) {  // 算法6.4// 按先序次序输入二叉树中结点的值(一个字符)。’#’字符表示空树。// 构造二叉链表表示的二叉树T。char ch;scanf("%c",&ch);if (ch=='#') T = NULL;else {if (!(T = (BiTNode *)malloc(sizeof(BiTNode)))) return ERROR;T->data=ch; // 生成根结点CreateBiTree(T->lchild);   // 构造左子树CreateBiTree(T->rchild);  // 构造右子树}return OK;
} // CreateBiTreeStatus PrintElement( ElemType e ) {  // 输出元素e的值
printf("%c", e );
return OK;
}// PrintElementStatus PreOrderTraverse( BiTree T, Status(*Visit)(ElemType) ) {// 前序遍历二叉树T的递归算法,对每一个数据元素调用函数Visit。//补全代码,可用多个语句if(T){if(Visit(T->data))if(PreOrderTraverse(T->lchild,Visit))if(PreOrderTraverse(T->rchild,Visit))return OK;return ERROR;}else return OK;} // PreOrderTraverseStatus InOrderTraverse( BiTree T, Status(*Visit)(ElemType) ) {// 中序遍历二叉树T的递归算法,对每一个数据元素调用函数Visit。

//补全代码,可用多个语句 if(T) { if(InOrderTraverse(T->lchild ,Visit)) if(Visit(T->data)) if(InOrderTraverse(T->rchild,Visit)) return OK; return ERROR; } else return OK; } // InOrderTraverse Status PostOrderTraverse( BiTree T, Status(*Visit)(ElemType) ) { // 后序遍历二叉树T的递归算法,对每一个数据元素调用函数Visit。

//补全代码,可用多个语句 if(T) { if(PostOrderTraverse(T->lchild,Visit)) if(PostOrderTraverse(T->rchild,Visit)) if(Visit(T->data)) return OK; return ERROR; } else return OK; } // PostOrderTraverse int main() //主函数 { BiTree T;//补充代码 CreateBiTree(T); PreOrderTraverse( T, PrintElement); printf("\n"); InOrderTraverse(T,PrintElement); printf("\n"); PostOrderTraverse(T,PrintElement ); printf("\n"); return 0; }//main




版权声明:本文博客原创文章。博客,未经同意,不得转载。

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

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

相关文章

XML的BOM

最近做一个XML的生成与导入功能,生成的XML经过语法验证和Schema验证,均无错误,编码方式也是所要求UTF-8,可是导入时却一直提示: Error on line 1 of document : Content is not allowed in prolog. Nested exception:…

关于C#中实现两个应用程序消息通讯的问题

最近项目中需要在两个应用程序之间通讯,这里的两个程序是在一台机器上,看了csdn上的一篇文章《如何在C#用WM_COPYDATA消息来实现两个进程之间传递数据》,原理是讲清楚了,但使起来很不爽,决定自己封装一下,满…

C#提升性能的几点提示和技巧

C#性能提示和技巧在Raygun[1],我们是一群非常懂多种语言的开发人员。Raygun的各个部分使用不同的语言和框架编写-最好的工作方式。鉴于大量的C#和我们正在处理的数据的爆炸性增长,在不同的时间需要进行一些优化工作。大部分重大的…

电脑睡眠快捷键_电脑快速进入睡眠的快捷键是什么?

电脑快速进入睡眠的快捷键是什么?正常情况下需要点击电源再按睡眠,小编觉得有点麻烦,如果你想要进入睡眠状态能够像锁屏快捷键那样就好了,那么今天就教大家如何设置睡眠快捷键,让你的电脑快速进入睡眠状态。我们知道电…

世界上最奇特的国界线,万万没想到...

全世界只有3.14 % 的人关注了爆炸吧知识你曾经可能多次在飞机上切换不同的国家,但未曾真的看见过这些国家之间的分界线。没见过之前,你脑海中的国界线是怎样的?一道高墙?还是一条无法逾越的鸿沟......看似正经而严谨,但…

Dell poweredge r210进BIOS修改磁盘控制器(SATA Controller)接口模式

Dell poweredge r210进BIOS修改磁盘控制器(SATA Controller)接口模式 开机后按F2键进入BIOS设置,如下图: BIOS设置主界面: 使用上下键移动光标到“SATA Controller”上,按回车键进入接口模式设置。 使用…

linux iptables导致httpd网页打不开

问题:httpd 服务已启动,80端口已开,但是网页就是打不开,重启服务器还是不行 忽然想看看log,记录如下: [Fri Jul 15 00:41:03 2011] [notice] SELinux policy enabled; httpd running as context root:syste…

二叉排序树与文件操作的设计与实现_堆排序就这么简单

一、堆排序介绍来源百度百科:堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。前面我已经…

extjs 前端js代码调用后台函数方法

前端javascript代码部分: Ext.Ajax.request( { url: /Process/SuspendWorkFlow, //配置的后台函数路由 params: { wfInsId: wf.WFInstanceID, status: cmd }, //对应函数的参数 success: function () { LaunchedWFGrid.store.reload(); Ext.Msg.show({ title: &qu…

linux卸载android studio,mac上完整卸载删除.简单粗暴无脑:androidstudio删除方案

如果你是mac ,你删除as ,删不干净也正常,你会发现安装的时候,前面的东西也在.配置文件在,会导致你以前的错误不想要的东西都在.废话不多说,复制粘贴就是干!!!!~~~~~~~~第一步: 复制粘贴就是干!!!!~~~~~~~~ 复制到命令行里面,直接回车就OKrm -Rf /Applications/Android\ Studi…

Tp框架如何使用事务和锁,还有查询缓存

1.事务 在ThinkPHP框架中,可以使用think\db\Transaction类来实现事务。 use think\Db; use think\db\Transaction;// 开始事务 Db::startTrans();try {// 执行数据库操作Db::table(user)->where(id, 1)->update([name > John]);// 提交事务Db::commit(); }…

因为没钱买衣服,我女朋友不要我了......

1 我妈为了省钱啥事都做得出▼2 高端的黄牛总是用最朴素的方法▼3 不加点什么你们觉得我阴阳怪气祖安大师怎么办?▼4 一天共有86400秒一天写2000首诗,也就是平均43.2秒一首曹植七步成诗也不过如此了▼5 如果在猫顺毛时弄乱它的毛会怎么样&#xff1…

Tech UP——EGO北京分会成立啦

古人崇敬自然,认为天地生万物而四时有序,是以春耕、夏耘、秋收、冬藏。在过去的8年里,InfoQ中国秉持着“促进软件开发领域知识与创新的传播”的理念,始终与技术人和公司在一起。经过8年的耕耘和沉淀,正是给大家呈现一些…

python基金会主席入门教程_Python基金会-文件IO操作,python,基础

函数功能open打开文件read读取文件write写文件close关闭文件readline行读取readlines多行读取open方法open方法:打开一个文件,返回一个文件对象(流对象)和文件描述符,打开文件失败则抛异常三步曲:创建文件,打开文件&am…

Sys.WebForms.PageRequestManagerTimeoutException:服务器请求超时

Sys.WebForms.PageRequestManagerTimeoutException:服务器请求超时 在页面上使用Ajax技术时,当页面的程序持续时间较长时,程序突然会中断,出现上述错误,最后查阅资料发现ScriptManager的AsyncPostBackTimeout异步请求是有时间限制…

实现一个登录:Mac+.NET 5+Identity+JWT+VS Code

.NET圈儿的朋友们,大家好!我可太喜欢如今开源的.Net了,写代码很巴适!所以今天分享一下之前学习的一个登录小案例,代码有不足之处欢迎指正!!!工具:采用VS Code及其插件开发…

linux e514写入错误,Linux上使用vim编辑文件保存时报错:E514: write error (file system full?)...

今天在Linux上使用vim编辑文件保存时报如下错误E514: write error (file system full?)从错误看,是磁盘满了,于是使用df -hl查看磁盘使用情况$ sudo df -hlFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg_myserver-lv_root 50G 43G 4.6G 91…

天体运行动图,如此美妙,如此震撼!

全世界只有3.14 % 的人关注了爆炸吧知识三体中心天体也在运动双星系统银河系与仙女系相撞模拟转自:奇趣物理--完--

链接链接新手变化需要注意哪些问题

昨天“新手高速早期排名提升的关键因素 ”seo文章中提到不包含在预。没有排名,没有交通情况只有通过链接重量提升,不过,昨天的帖子时,有一个提为好友。除非你是一个人或资源非常丰富的静脉。情链接也不是非常好换?相信…

[转载]工作面试时最难的25个问题

原文地址:工作面试时最难的25个问题作者:zcan准备是成功的一半 如果你是一个对目前的职位不满意,正着手去在新的一年里找到一个新的职位,这篇文章就是你的一个帮手。工作面试是你去面对未来的老板的征途中最重要的一个过程。你必须…