北航计软实验报告实验二.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《北航计软实验报告实验二.docx》由会员分享,可在线阅读,更多相关《北航计软实验报告实验二.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验报告二叉树实验名称班 学 姓 成级号名绩实验概述:【实验目的及要求】掌握二叉树的存储结构【实验原理】(1)二叉树的链式存储结构二叉树的每一个结点i有三个域:值域V (i),左链域L (i),右链域R (i)o分别用 三个一维数组表示它们,并用头指针HBT指向二叉树的根结点。(2)按层次输出所有结点设置一个容量足够大的循环队列(可以用一个首尾相接的一维数组模拟)。初始时,将 根结点序号入队。然后每次从队列中退出一个结点序号,将此结点的值及左右链指针输出, 且依次将此结点的左右链指针入队。这个过程一直进行到队列空为止。设循环队列数组为 cq (1:m),其头尾指针分别为front与rear,则
2、按层次输出所有结点的算法如下:IF HBT = 0 THEN RETURN “THIS TREE IS EMPTY”Front rear- mADD (cq, HBT, front, rear)WHILE front 丰rear DO(DEL (cq, i, front ,rear )OUTPUT ( L,V,R (i)IF L(i),0 THEN ADD (cq, L( i), front, rear)IF R(i)W0 THEN ADD (cq, R( i), front, rear)RETURN在这个算法中的ADD和DEL分别为入队和退队运算的两个过程,其算法(不考虑溢出情 况)如下:A
3、DD ( cq, i, front, rear)rear - rear + 1IF rear = m + 1 THEN rear _ 1cq (rear) - iRETURNDEL (cq, i, front, rear )front J front + 1IF front = m+ 1 THEN font _ 1i J cq (front)RETURN(3)输出所有叶子结点设置一个容量足够大的栈S (可以用一个一维数组模拟它,栈底在数组的第一个元素 处)。具体过程是:从根结点开始扫描二叉树,如果扫描的当前结点的左右均为零,则输出 次叶子结点;否则将非零的右指针和左指针值推入堆栈。然后从栈中退
4、出一个结点序号重新 进行这个过程,直至栈空为止。其算法如下:IF HBT = O THEN RETURN “THIS TREE IS EMTPY ”top. 0PUSH ( S, HBT, top)WHILE top W。DO(POP (S, i, top)IF (L (i) =0) and (R (i) =0) THEN OUTPUT V (i)ELSE (IF R (i) =0 THEN PUSH (S, R (i), top)IF L (i) 00 THEN PUSH (S, L (i), top)RETURN(4)将所有左右子树值交换这个问题的处理和输出所有叶子结点的问题很类彳以,只要
5、将非叶子结点的左右指针交换 即可,其算法如下:IF HBT = 0 THEN RETURN UTHIS TREE IS EMPTY” top . 0PUSH (S, HBT, top)WHILE top *0 DO (POP (S, i, top)IF (L (i) WO) or (R (i) *0) THEN (L (i) R (i)IF L (i) W0 THEN PUSH (S, L (i), top)IF R (i) =0 THEN PUSH (S, R (i), top) ) ) RETURN【实验环境】(使用的软硬件)硬件:PC 软件:VC+6.0实验内容:【实验方案设计】1 .对
6、给定二叉树用链式链式存储结构;利用队列与栈对二叉树进行运算。2 .按层次输出所有结点。3 .输出所有叶子结点。4 .将所有左右子树值交换。【实验过程】(实验步骤、记录、数据、分析)(-)实验步骤1 .分别编制实验内容中题2、3、4的三个子程序。2 .以上图所示的二叉树为例编制主程序,实现下述功能,并运行这个程序。(1)输入二叉树用链式结构存储;(2)调用题2的子程序,并输出结果;(3)调用题3的子程序,并输出结果;(4)调用题4的子程序,并输出结果;3 .自行设计一棵二叉树,重复步骤2。4 .整理程序清单与所有结果,并写出实验报告。(二)程序清单#include#includestruct t
7、ree(int num;struct tree left;struct tree bright;;int a50=0;struct tree *build(int i)(struct tree *n;n=(struct tree)malloc(sizeof(struct tree);n-num=ai;if(a2*i!=0) n-left=build(2*i);elsen-left=NULL;if(a2*i+l!=0)n-right=build(2*i+1);elsen-right=NULL;retum(n);)struct tree *head;int build_binary_tree()(
8、FILE *fi;int i=l;char file_name20;printf(”请输入存放满二叉树数据的文件名称:“); scanf(H%sH,file_name);fi=fopen(file_name,nrn);if(fi=NULL)(printf(文件读取失败,名为“%s”的文件不存在! nfile_name); return(O); else( while(!feof(fi) (fscanf(fij%dt&ai); i=i+l;)fclose(fi);head=build(l);printf(文件读取成功,已用链式存储方式构建二叉树。) return(l);#define m 100
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北航 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内