预览加载中,请您耐心等待几秒...
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
中南民族大学管理学院学生实验报告实验项目:二叉树的建立与遍历课程名称:数据结构年级:2011专业:信息管理与信息系统指导教师:实验地点:管理学院综合实验室完成日期:2012年12月15日小组成员:微博@song-style是坏学长2012学年至2013学年度第1学期@song-style是坏学长实验目的(1)掌握二叉树的建立与遍历(2)学会定义抽象数据类型(3)学会分析问题,设计适当的解决方案实验内容【问题描述】建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。【基本要求】从键盘接受输入(先序),以二叉树表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。【测试数据】ABC##DE#G##F###(其中#表示空格字符)则输出结果为先序:ABCDEGF中序:CBEGDFA后序:CGEFDBA【选作内容】采用非递归算法实现二叉树的遍历实验步骤(一)需求分析(二)概要设计(三)详细设计(四)调试分析1.我们用getchar(ch)读入一个字符时读不出来,后来我们用scanf("%c",&ch)也不对,用//scanf("%c",%ch)和scanf(&ch)是对的,但根据我们以前学的C语言语句结构,这后面的两个都是不对的。(五)用户手册(六)测试结果(说明:将程序实际运行的结果截图后粘贴在这里。请删除这里的说明文字)(七)心得体会(八)团队介绍(九)附录:源程序清单#include<stdio.h>#include<malloc.h>typedefstructnode{chardata;structnode*lchild;structnode*rchild;}Node,*pNode;voidPreOrder(pNodem);//先序遍历voidInOrder(pNodem);//中序遍历voidPostOrder(pNodem);//后序遍历pNodecreat_1();//输入一个先序顺序的二叉树字符串pNodecreat();//按照先序遍历创建一个二叉树charb[25];intj;intmain(){pNodem=NULL;inti=1,a;while(i){printf("\n********请选择************\n");printf("1按先序遍历创建二叉树\n");printf("2按先序遍历遍历二叉树\n");printf("3按中序遍历遍历二叉树\n");printf("4按后序遍历遍历二叉树\n");printf("输入以上数字之外的则退出");printf("\n**************************\n");printf("请输入:");scanf("%d",&a);switch(a){case1:m=creat_1();break;case2:PreOrder(m);break;case3:InOrder(m);break;case4:PostOrder(m);break;default:i=0;}}}pNodecreat_1(){printf("请输入字符串:(例如ABC##DE#G##F###,#代表空)\n");scanf("%s",b);returncreat();}pNodecreat(){pNodem;charch;ch=b[j];j++;scanf(&ch);//读入一个字符if(ch=='#')returnNULL;//构造空树//构造新结点m=(pNode)malloc(sizeof(Node));m->data=ch;//生成根结点m->lchild=creat();//构造左子树m->rchild=creat();//构造右子树returnm;}voidPreOrder(pNodem){if(!m)return;else{printf("%c",m->data);PreOrder(m->lchild);PreOrder(m->rchild);}}voidInOrder(pNodem){if(!m)return;else{InOrder(m->lchild);printf("%c",m->data);InOrder(m->rchild);}}voidPostOrder(pNodem){if(!m)return;else{PostOrder(m->lchild);PostOrder(m->rchild);print