- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(实现二叉树中所有节点左右子树的交换
数据结构课程设计
实验报告
题目名称: 实现二叉树中所有节点左右子树的交换
学 院: 信息科学与工程学院
专业班级: 计算机科学与技术 1003 班
姓 名: 叶 成 功
学 号:
指导教师: 陈国良教授 李立三教授
日 期: 2012年7月
一、问题描述 4
二、基本要求 4
三、数据结构的设计 4
1、结点的数据结构 4
2、基本操作 4
四、软件模块结构图 5
五、程序设计思想 6
1、程序设计基本思想 6
2、程序设计基本思想 6
六、程序流程图 7
1、创建函数 7
2、前序遍历函数 8
3、中序遍历函数 9
4、后序遍历函数 10
5、层序遍历函数 11
6、左右子树交换函数 13
7、二叉树打印函数 14
8、遍历调用函数 14
9、菜单函数 16
10、主函数 16
七、源程序代码 18
八、调试分析 25
九、数据测试 26
1、主菜单界面 27
2、建立一棵有二十个结点的完全二叉树 28
3、打印二叉树 28
4、遍历二叉树 28
5、二叉树左右子树交换 28
6、交换后打印二叉树 29
7、交换后二叉树的遍历 29
8、退出程序 29
十、用户使用手册 29
十一、心得体会 29
一、问题描述
二叉树是一种常见的特殊的树型结构,在计算机领域有着极为广泛的应用。在二叉树的一些应用中,常常要求在树中查找具有某些特征的结点或者对树中全部结点逐一进行某种处理,这就提出了遍历二叉树。根据遍历的方向的不同,有前序遍历、中序遍历、后序遍历以及层序遍历。在本次课程设计中,要求学生通过编写程序完成对二叉树的一些操作,比如可以构造二叉树、打印二叉树、遍历二叉树以及对左右子树进行交换等等。
二、基本要求
要求:。构造一颗20个节点的完全二叉树或者20个节点以上的满二叉树。
实现如下步骤:
(1)实现二叉树的构造过程,并打印出二叉树
(2)对该二叉树分别用层序、前序、中序和后序四种不同的方法进行遍历;
(3)将该二叉树的所有左右子树进行交换,得到新的二叉树,并打印出该二叉树;
(4)对新获得的二叉树分别用层序、前序、中序和后序四种不同的方法进行遍历。
三、数据结构的设计
由数据结构中二叉树的定义可知,二叉树的结点由一个数据元素和分别指向其左、右子树的两个分支构成,所以在本程序二叉树的构造是采用二叉链表的链式存储结构,链表中的结点应包含三个域:数据域和左、右孩子的指针域。这种存储结构可以方便二叉树的建立以及遍历。
1、结点的数据结构
struct node
{
char data;
struct node *lchild,*rchild;
}
2、基本操作
void Create(BiTNode **p)
初始条件:按照结点的结构体构造二叉树;
操作结果:构造一棵二叉树。
void PreOrderTraverse(BiTree T)
初始条件:二叉树T存在;
操作结果: 按照前序遍历方法遍历二叉树。
void InOrderTraverse(BiTree T)
初始条件:二叉树T存在;
操作结果:按照中序遍历方法遍历二叉树。
void PostOrderTraverse(BiTree T)
初始条件:二叉树T存在;
操作结果:按照后序遍历方法遍历二叉树。
void LevelOrderTraverse(BiTree T)
初始条件:二叉树T存在;
操作结果:按照层序遍历方法遍历二叉树。
void SwapChild(BiTNode **p)
初始条件:二叉树存在且交换的结点有子树;
操作结果:将二叉树左右结点交换。
void Paint(BiTree T)
初始条件:二叉树T存在;
操作结果:将二叉树的结点打印出来。
四、软件模块结构图
构造二叉树
程序设计思想
1、程序设计基本思想
(1)本实验要求编写一个程序实现对二叉树的各种基本操作,并以此为目的设计一个程序,完成如下功能:
1、输入二叉树的先序序列字符,建立二叉链表。注意:输入时,必须加入虚结点以示空指针的位置;假设虚结点输入时用空格字符表示。
文档评论(0)