数据结构上机报告6

数据结构上机报告6

ID:35342714

大小:92.42 KB

页数:5页

时间:2019-03-23

数据结构上机报告6_第1页
数据结构上机报告6_第2页
数据结构上机报告6_第3页
数据结构上机报告6_第4页
数据结构上机报告6_第5页
资源描述:

《数据结构上机报告6》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验报告姓名周亮学号2011444541专业班级计科2011-02课程名称指导教师王双明机房名称1515上机日期上机项目名称树的基本操作上机步骤及内容:1、实验目的1.进一步掌握指针变量、动态变量的含义;2.掌握二叉树的结构特性,以及各种存储结构的特点和适用范围;3•掌握用指针类型描述、访问和处理二叉树的运算。2、内容1阅读并理解程序代码;2修改:在程序中使用预存储树结点的方式建立二叉树,(ABC##D##EF###);3编程统计出计算二叉树深度、所有结点总数、度分别为2、1、0的结点数目;3、

2、程序代码#includenstdio.hn#includeHmalloc.h"typedefstructtree{〃树的结构定义chardata;structtree*lchild,*rchild;//左右孩子的指针定义}Qtree,*Ttree;chara[14]二”ABC##D##EF###“;〃存储树中元素的数组inti=-1;intId,rd;〃用于计算树的深度intflagel,flage2,flage0;〃用于计算度分别为2、1、0的结点数目Ttreecreat(Ttreer)//创

3、建树的链表该返回值为指针类型{i++;fflush(stdin);if(i==0){printf(nTheelementsofbinarytreebelowrT);}if(班i]=#)〃当遇到#时返回空指针表明该指针不指向任何数returnNULL;else//否则把值存到当前指针指的内存空间中{r=(Qtree*)malloc(sizeof(Qtree));〃动态申请内存空间r->data=a[i];printf(u%c”,a[i]);r->lchild=creat(r->lchild);〃

4、分别为该结点的左右孩子指针创建树链表r->rchild=creat(r->rchild);returnr;//创建完后返回指针voidpreorder(Ttreer){if(r){printf(n%c",r->data);preorder(r->lchild);preorder(r->rchild);}}voidinorder(Ttreer){if(r){inorder(r->lchild);printf(n%c",r->data);inorder(r->rchild);}}voidpostor

5、der(Ttreer){if(r)〃先序遍历〃判断该指针是否为空〃输出该指针的所指向的内容〃同样对左右指针调用先序遍历函数//中序遍历〃后序遍历postorder(r->lchild);postorder(r->rchiId);printf(H%c",r->data);}}intdeep(Ttreer)//判断深度函数{if(!r)〃当该指针指向空时结朿返回0return0;else{Id=deep(r->lchild);//否则先对该指针所指向的结点的左右指针调用函数自身计算以它为rd=dee

6、p(r->rchild);if(ld<=rd)〃比较左右子树的深度returnrd+1;〃返冋该树的下面子树的深度和加上本身自己elsereturnld+1;intnuml,num2,n=0;if(!r)〃当指针为空时结束return0;elseif(r->lchild==NULL&&r->rchild==NULL)n=1;numl=degreeO(r->lchild);num2=degreeO(r->rchild);return(numl+num2+n);//否则判断该结点的左右是否都为空//

7、为空时计数为//对左右子树调用函数自身//返冋左右子树中度为空的结点个数和自身intdegreel(Ttreer){intnuml,num2,n=0;//判断度为1的结点个数〃当指针为空时结束return0;if((r->lchild!=NULL&&r->rchild==NULL)

8、

9、(r->lchild==NULL&&r->rchild匸NULL))//1n=1;//满足条件时计数n=lnuml=degreel(r->lchild);//对左右子树调用自身num2=degree1(r->rch

10、ild);〃返回左右子树中度为1的结点个数和自身的情况nreturn(numl+num2+n);}intdegree2(Ttreer)//判断度为2的结点个数intnumhnum2,n=0;if(!r)return0;if(r->lchild!=NULL&&r->rchild!=NULL)n=l;numl=degree2(r->Ichild);num2二degree2(r->rchild);return(num1+num2+n);〃当指针为空时结束//否则判断该结点的左右指针的情况〃满足条件时计

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

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

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