山东大学数据结构实验报告五.doc

山东大学数据结构实验报告五.doc

ID:61158063

大小:160.50 KB

页数:28页

时间:2021-01-22

山东大学数据结构实验报告五.doc_第1页
山东大学数据结构实验报告五.doc_第2页
山东大学数据结构实验报告五.doc_第3页
山东大学数据结构实验报告五.doc_第4页
山东大学数据结构实验报告五.doc_第5页
资源描述:

《山东大学数据结构实验报告五.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.数据结构实验报告——实验五 实验题目:排序算法学号:1日期:2015.12.11班级:计机14.1:方铮Email:liu3.实验目的:二叉树操作任务要求: 一、实验目的1、掌握二叉树的基本概念,链表描述方法;遍历方法。二、实验容创建二叉树类。二叉树的存储结构使用链表。提供操作:前序遍历、中序遍历、后序遍历、层次遍历、计算二叉树结点数目、计算二叉树高度。对建立好的二叉树,执行上述各操作。接收键盘录入的二叉树前序序列和中序序列(各元素各不相同),输出该二叉树的后序序列。Word资料.软件环境:Win7操作系统开发工具:visualC++6.0实验代码:#include#

2、include#include#includeusingnamespacestd;#defineMaxSize100#defineMaxWidth40#include#include#include#includetypedefcharElemType;typedefstructtnodeWord资料.{ElemTypedata;structtnode*lchild,*rchild;}BTNode;/*建立二叉树算法描述:用ch扫描采用括号表示法表示二叉树的字符串Str。

3、分以下几种情况:1、若ch='('则将前面刚创建的结点作为双亲结点进栈,并置k=1,表示其后创建的结点将做为这个结点的左孩子结点。2、若ch=')'表示栈中结点的左右孩子结点处理完毕,退栈。3、若ch=','表示其后创建的结点为右孩子结点4、其他情况表示要创建一个结点,并根据k值建立它与栈中结点之间的关系,当k=1时,表示这个结点作为栈中结点的左孩子结点,当k=2时,表示这个结点作为栈中结点的右孩子结点。如此循环直到str处理完毕。算法中使用一个栈st保存双亲结点,top为其栈指针,k指定其后处理的结点是双亲结点(保存在栈中)的左孩子结点(k=1)还是右孩子结点(k=2)。*/voidCr

4、eateBtree(BTNode*&bt,char*str)//由str创建二叉链btWord资料.{BTNode*st[MaxSize],*p=NULL;inttop=-1,k,j=0;charch;bt=NULL;//建立的二叉树初始为空ch=str[j];while(ch!='')//str未扫描完时循环{switch(ch){case'(':top++;st[top]=p;k=1;break;//为左孩子结点case')':top--;break;case',':k=2;break;default:p=(BTNode*)malloc(sizeof(BTNode));p->dat

5、a=ch;p->lchild=p->rchild=NULL;if(bt==NULL)bt=p;else{switch(k){case1:st[top]->lchild=p;break;Word资料.case2:st[top]->rchild=p;break;}}}j++;ch=str[j];}}/*求二叉树高度算法:递归模型如下if(b==NULL)f(b)=0;elsef(b)=max{f(b)->lchild,f(b)->rchild}+1;*/intBTHeight(BTNode*bt){intlchilddep,rchilddep;if(bt==NULL)return0;else{

6、lchilddep=BTHeight(bt->lchild);Word资料.rchilddep=BTHeight(bt->rchild);return(lchilddep>rchilddep)?(lchilddep+1):(rchilddep+1);}}/*求二叉树结点个数算法:递归模型如下if(bt==NULL)f(b)=1;elsef(bt)=f(bt->lchild)+f(bt->rchild)+1;*/intNodeCount(BTNode*bt){intnum1,num2;if(bt==NULL)return0;else{num1=NodeCount(bt->lchild);nu

7、m2=NodeCount(bt->rchild);returnnum1+num2+1;}}Word资料./*求二叉树叶子结点个数算法:递归模型如下if(bt==NULL)f(bt)=0;if(bt为叶子结点)f(bt)=1;elsef(bt)=f(bt->lchild)+f(bt->rchild);*/intLeafCount(BTNode*bt){intnum1,num2;if(bt==NULL)return0;els

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。