数据结构实验报告-树与二叉树.doc

数据结构实验报告-树与二叉树.doc

ID:61784515

大小:94.00 KB

页数:5页

时间:2021-03-20

数据结构实验报告-树与二叉树.doc_第1页
数据结构实验报告-树与二叉树.doc_第2页
数据结构实验报告-树与二叉树.doc_第3页
数据结构实验报告-树与二叉树.doc_第4页
数据结构实验报告-树与二叉树.doc_第5页
资源描述:

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

1、福建农林大学计算机与信息学院实验报告树与二叉树一、实验目的和要求1)进一步掌握指针变量、动态变量的含义。2)掌握二叉树的结构特性及各种存储结构的特点及适用范围。3)掌握用指针类型描述、访问和处理二叉树的运算。4)熟悉各种存储结构的特征及如何应用树结构解决具体问题。二、实验内容和原理实验内容:编写程序实现交换二叉树中所有结点的左右子树的算法。实验原理:【问题描述】建立一棵二叉树,按层次遍历该二叉树,并实现将二叉树中所有结点的左右子树交换,显示其结果。【基本要求】从键盘接受输入点(按层次遍历顺序),以“#”号结束,以二叉链表作为存储结构,将其二叉树

2、中所有结点的左右子树交换,并将结果输出。【实现】交换二叉树中所有结点的左右子树的具体步骤如下:将根结点进指针栈seqstack;当指针栈不空时,从栈顶取结点,如果此结点的左右孩子不为空,则把其左右孩子交换,然后再分别将其左右孩子进栈;反复执行步骤,直至指针栈为空时止。三、实验环境WindowsXP系统visualc++6.0四、算法描述及实验步骤#include"stdio.h"#include"stdlib.h"#defineMAXSIZE100typedefcharelemtype;typedefstructbtnode{elemtyped

3、ata;structbtnode*lchild,*rchild;}bitnode,*bitree;typedefstructnodd{bitreeaddr;intparent;}sequre;bitreeins_node(bitrees,bitreet);voidprint_tree(bitreet);bitreecreat_ordbt();sequreseq[MAXSIZE];voidswap(bitreetree);intn=0;voidmain(){bitreetree;tree=creat_ordbt();swap(tree);prin

4、tf("输出交换后的二叉树");print_tree(tree);}bitreecreat_ordbt(){bitreet,s;elemtypex;t=NULL;printf("请按层次输入结点1的值(以#号结束,0号为空的结点):");scanf("%c",&x);getchar();while(x!='#'){n++;if(x!='0'){s=(bitree)malloc(sizeof(bitnode));s->data=x;s->lchild=NULL;s->rchild=NULL;seq[n].addr=s;t=ins_node(s

5、,t);}elseseq[n].addr=NULL;printf("请输入结点%d的值(以#号结束,0号为空的结点):",n+1);x=getchar();getchar();}returnt;}bitreeins_node(bitrees,bitreet){intkk;if(n==1)t=s;else{kk=n/2;if(n%2==0)seq[kk].addr->lchild=s;elseseq[kk].addr->rchild=s;}returnt;}voidprint_tree(bitreet){inti,j,k,nn,start,hea

6、d,rear;sequreseqq[MAXSIZE];bitreep;if(t==NULL)return;head=0;nn=rear=0;seqq[rear].addr=t;for(;head<=rear&&nnlchild=NULL)seqq[++rear].addr=p->lchild;if(p->lchild!=NULL)seqq[++rear].addr=p->rchild;}for(head=0,j=0,k=1;head<=rear;){printf(

7、"第%d层数据:",j);for(i=0,start=head;headdata);if(seqq[head].addr->lchild==NULL)i=i-1;if(seqq[head].addr->rchild==NULL)i=i-1;}k=k*2+i;j++;}}voidswap(bitreeroot){inttop;bitreetemp,stack[MAXSIZE];if(root!=NULL){top=1;stack[top]=root;d

8、o{root=stack[top];top=top-1;if((root->lchild!=NULL)

9、

10、(root->rchild!=NULL)){

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

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

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