欢迎来到天天文库
浏览记录
ID:56922151
大小:128.00 KB
页数:19页
时间:2020-07-24
《数据结构二叉树前中后序非递归遍历.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构《实验2》实验报告实验项目2:二叉树前序、中序非递归遍历学 号姓 名课程号实验地点指导教师时间评语:按时完成实验;实验内容和过程记录完整;回答问题完整、正确;实验报告的撰写认真、格式符合要求;无抄袭的行为。成绩教师签字二叉树中序、后序非递归遍历1、预习要求:二叉树结构定义。2、实验目的:(1)了解二叉树结构遍历概念;(2)理解二叉树二种不同遍历过程;(3)掌握二叉树遍历算法程序。3、实验内容及要求:(1)建立包含10个结点的二叉树(树结构和数据元素的值由自己设定);(2)完成二叉树非递归遍历程序;(3)给出程序和每种遍历程序的结果。4、实验设备(环境)及要求
2、硬件:支持IntelPentiumⅡ及其以上CPU,内存128MB以上、硬盘1GB以上容量的微机。软件:配有Windows98/2000/XP操作系统,安装VisualC++。5、实验时间:10学时6、该文档的文件名不要修改,存入<学号><姓名>命名的文件夹中7、该表中的数据只需填空,已有内容不要修改实验结果(运行结果界面及源程序,运行结果界面放在前面):依次是前序,中序,后序遍历的截屏#defineSTUDENTEType#include#include#include#include#i
3、nclude//二叉树链式结构定义structSTUDENT{charname[10];charnumber[12];charplace[10];charsex[3];intage;};structBinaryTreeNode{ETypedata;BinaryTreeNode*LChild;BinaryTreeNode*RChild;};typedefBinaryTreeNodeBinaryTree;//堆栈结构定义structSType{BinaryTreeNode*ptr;boolstatus;};structStack{SType*eleme
4、nt;inttop;intMaxsize;};structNode_Ptr{BinaryTreeNode*ptr;};voidDigitalToString(charstr[],intn){chartemp;chark=1;inti=0;while(n&&i<80){k=n%10+48;n=n/10;str[i]=k;i++;}str[i]=' ';intlen=strlen(str);for(i=0;i5、k&S,intMaxStackSize){//构造一个最大容量为MaxStackSize的堆栈S.Maxsize=MaxStackSize;S.element=newSType[S.Maxsize];S.top=-1;}boolIsEmpty(Stack&S){//判断堆栈是否为空if(S.top==-1)returntrue;returnfalse;}boolIsFull(Stack&S){//判断堆栈是否为满if(S.top>=S.Maxsize-1)returntrue;elsereturnfalse;}boolGetTop(Stack&S,SType&resul6、t){//返回堆栈S中栈顶元素if(IsEmpty(S))returnfalse;result=S.element[S.top];returntrue;}boolPop(Stack&S,SType&result){//将S栈顶的值取至result中,返回出栈后的状态if(IsEmpty(S))returnfalse;result.ptr=S.element[S.top].ptr;result.status=S.element[S.top].status;S.top--;returntrue;}boolPush(Stack&S,SType&result){//result7、进s栈,返回进栈后的状态值if(IsFull(S))returnfalse;S.top++;S.element[S.top]=result;//S.element[S.top].status=result.status;returntrue;}//构造一棵二叉树BinaryTree*MakeNode(EType&x){//构造节点BinaryTree*ptr;ptr=newBinaryTreeNode;if(!ptr)returnNULL;ptr->data=x;ptr->LChild=NULL;ptr->RChild=NULL;retu
5、k&S,intMaxStackSize){//构造一个最大容量为MaxStackSize的堆栈S.Maxsize=MaxStackSize;S.element=newSType[S.Maxsize];S.top=-1;}boolIsEmpty(Stack&S){//判断堆栈是否为空if(S.top==-1)returntrue;returnfalse;}boolIsFull(Stack&S){//判断堆栈是否为满if(S.top>=S.Maxsize-1)returntrue;elsereturnfalse;}boolGetTop(Stack&S,SType&resul
6、t){//返回堆栈S中栈顶元素if(IsEmpty(S))returnfalse;result=S.element[S.top];returntrue;}boolPop(Stack&S,SType&result){//将S栈顶的值取至result中,返回出栈后的状态if(IsEmpty(S))returnfalse;result.ptr=S.element[S.top].ptr;result.status=S.element[S.top].status;S.top--;returntrue;}boolPush(Stack&S,SType&result){//result
7、进s栈,返回进栈后的状态值if(IsFull(S))returnfalse;S.top++;S.element[S.top]=result;//S.element[S.top].status=result.status;returntrue;}//构造一棵二叉树BinaryTree*MakeNode(EType&x){//构造节点BinaryTree*ptr;ptr=newBinaryTreeNode;if(!ptr)returnNULL;ptr->data=x;ptr->LChild=NULL;ptr->RChild=NULL;retu
此文档下载收益归作者所有