二叉树的建立与遍历实验报告(c语言编写-附源代码)_第1页
二叉树的建立与遍历实验报告(c语言编写-附源代码)_第2页
二叉树的建立与遍历实验报告(c语言编写-附源代码)_第3页
二叉树的建立与遍历实验报告(c语言编写-附源代码)_第4页
二叉树的建立与遍历实验报告(c语言编写-附源代码)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上二叉树的建立与遍历实验报告 级 班 年 月 日 姓名 学号_ 1实验题目建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。2需求分析本程序用VC编写,实现建立一棵二叉树的功能,并对其进行遍历(先序、中序、后序),并且打印输出遍历结果。 输入的形式和输入值的范围: 输入二叉树的先序,当其结点为空时,需要输入#。(输入的先序仅含字母和#) 输出的形式:输出二叉树的先序、中序、后序。 程序所能达到的功能:实现建立一棵二叉树的功能,并对其进行遍历(先序、中序、 后序),并且打印输出遍历结果。 测试数据:输入数据:输入ABC#DE#G#F#输出结果:二叉树的

2、先序遍历为:ABCDEGF二叉树的中序遍历为:CBEGDFA二叉树的后序遍历为:CGEFDBA3概要设计1) 为了实现上述程序功能,需要定义二叉链表的抽象数据类型:typedef struct BinaryTreeNode TElemType data;/二叉树结点中的数据域 struct BinaryTreeNode *lchild , *rchild; /二叉树结点的左孩子和右孩子指针BinaryTreeNode ,*BiTree;基本操作:A. void CreateBinaryTree (BiTree &T) 初始条件:无操作结果:建立了二叉树。B. void PreOrder

3、(BiTree T) 初始条件:存在一棵二叉树操作结果:先序遍历二叉树,并且输出先序遍历的结果。C. void MidOrder(BiTree T)初始条件:存在一棵二叉树操作结果:中序遍历二叉树,并且输出中序遍历的结果。D. void PostOrder(BiTree T)初始条件:存在一棵二叉树操作结果:后序遍历二叉树,并且输出后序遍历的结果。程序包含5个函数:主函数main()先序建立二叉树 void CreateBinaryTree (BiTree &T)先序遍历二叉树,并且输出先序遍历的结果 void PreOrder(BiTree T); 中序遍历二叉树,并且输出中序遍历的

4、结果 void MidOrder(BiTree T);序遍历二叉树,并且输出后序遍历的结果 void PostOrder(BiTree T);主函数main()CreateBinaryTreePreOrderMidOrderPostOrder各函数间关系如下:4详细设计1) 二叉链表的定义typedef struct BinaryTreeNode定义一个树结点的数据域;定义一个该结点的左孩子指针和右孩子指针;2) void CreateBinaryTree (BiTree &T)/先序建立二叉树 输入一个字符量;if(输入字符= '#') T指针置值为NULL;else

5、 动态申请一个指向二叉树结构体的指针 把输入字符赋值给新指针的数据域data; 调用CreateBinaryTree(新指针的lchild成员); 调用CreateBinaryTree(新指针的rchild成员); 3) void PreOrder(BiTree T) /先序遍历二叉树 if(T指针不为NULL)输出T的data域;先序遍历左子树; 先序遍历右子树;4) void MidOrder(BiTree T) /中序遍历二叉树 if(T指针不为NULL)中序遍历左子树;输出T的data域;中序遍历右子树;5) void PostOrder(BiTree T) /中序遍历二叉树 if(T

6、指针不为NULL) 后序遍历左子树;后序遍历右子树;输出T的data域;5调试分析在编写程序过程中,我将scanf(”%c”,&ch)中的%c写成%d,程序运行了一段时间没有结果,经过检查,发现了这个错误。编写程序不能有一点马虎,否则后续纠错工作很辛苦,编写程序的进度变慢。6使用说明程序名为:二叉树遍历.exe,运行环境为DOS。程序执行后显示输入字符,先序建立二叉树:此时请输入一棵二叉树的先序,并且当结点为空时,输入#输入完成后,会输出该二叉树的先序遍历、中序遍历和后序遍历7测试结果1) 输入数据:输入ABC#DE#G#F#输出结果:二叉树的先序遍历为:ABCDEGF二叉树的中序遍历

7、为:CBEGDFA二叉树的后序遍历为:CGEFDBA2) 输入数据:输入AB#C#输出结果:二叉树的先序遍历为:ABC二叉树的中序遍历为:BAC二叉树的后序遍历为:BCA3) 二叉树如下:先序输入这棵二叉树,程序运行结果为:程序源代码:#include<stdio.h>#include<stdlib.h>typedef char TElemType;typedef struct BinaryTreeNode/二叉链表的存储结构TElemType data;struct BinaryTreeNode *lchild , *rchild;BinaryTreeNode ,*B

8、iTree;void CreateBinaryTree (BiTree &T)/先序建立二叉树 char ch;scanf("%c",&ch);if(ch = '#') T=NULL;else if(!(T = (BinaryTreeNode *)malloc (sizeof(BinaryTreeNode) exit (-1);/判断malloc函数是否获得符合要求的内存块,是则继续程序,否则使用exit函数强制退出程序/如果malloc函数无法获得符合要求的内存块,malloc函数会返回NULL指针T->data=ch;CreateB

9、inaryTree(T->lchild);CreateBinaryTree(T->rchild);void PreOrder(BiTree T)/先序遍历二叉树if(T)printf("%c ",T->data);PreOrder(T->lchild); PreOrder(T->rchild);void MidOrder(BiTree T)/中序遍历二叉树if(T)MidOrder(T->lchild);printf("%c ",T->data);MidOrder(T->rchild);void PostOrder(BiTree T)/后序遍历二叉树if(T)PostOrder(T->lchild);PostOrder(T->rchild);printf("%c ",T->data);void main()BiTree Tree;printf("输入字符,先序建立二叉树:n");CreateBinaryTree(Tree);printf("二叉树的先序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论