实验三:二叉树遍历算法的设计_第1页
实验三:二叉树遍历算法的设计_第2页
实验三:二叉树遍历算法的设计_第3页
实验三:二叉树遍历算法的设计_第4页
实验三:二叉树遍历算法的设计_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学校代码:10128学 号:201220905048 数据结构实验报告(题 目:二叉树遍历算法的设计学生姓名:孙跃学 院:理学院系 别:数学系专 业:信息与计算科学班 级:信计12-2任课教师:杜雅娟二一四年十一月2一、实验目的通过理解二叉树的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。二、程序分析本演示程序用Visual C+ 6.0编写,完成二叉树的遍历算法。1.按先序次序输入二叉树中结点的值,构造二叉链表表示的二叉树t;2.对二叉树t作先序、中序、后序遍历的递归算法,输出结果;3.计算二叉树t的深度,输出结果;4.计算二叉树t的叶子结点个数。三、程序设计在开头定义了

2、二叉树的链式存储结构,此处采用了每个结点中设置三个域, 即值域,左指针域和右指针域。1、 二叉树的建立链式存储结构,首先typedef struct BiTNode:定义二叉树的链式存储结构,此处采用了每个结点中设置三个域,data:即值域,*lchild:左指针域和rchild:右指针域;2、 二叉树的前序遍历;利用二叉链表作为存储结构的前序遍历:先访问根结点,再依次访问左右子树;3、 二叉树的中序遍历;利用二叉链表作为存储结构的中序遍历:先访问左子数,再访问根结点,最后访问右子树;4、 二叉树的后序遍历;利用二叉链表作为存储结构的前序遍历:先访问左右子树,再访问根结点;5、 求二叉树的深度

3、:首先判断二叉树是否为空,若为空则此二叉树的深度为0。否则,就先别求出左右子树的深度并进行比较,取较大的+1就为二叉树的深度;6、 二叉树的求叶子结点的个数计算;先分别求得左右子树中各叶子结点个数,再计算出两者之和即为二叉树的叶子结点数;7、 主函数:主函数中分别调用各函数。四、 实验程序#include<stdio.h>#include<malloc.h>#define M 20typedef struct nodechar data;struct node *lchild,*rchild;BTnode;BTnode * create()BTnode *t;char

4、ch;scanf("%c",&ch);if(ch='#')t=NULL;elset=(BTnode*)malloc(sizeof(BTnode);t->data=ch;t->lchild=create();t->rchild=create();return t;void Inordertraverse(BTnode *t)int i=0;BTnode *p,*sM;p=t;dowhile(p!=NULL)si+=p;p=p->lchild;if(i>0)p=s-i;printf("%ct",p->

5、;data);p=p->rchild;while(i>0|p!=NULL);void Preordertraverse(BTnode *t)int i=0;BTnode *p,*sM;p=t;dowhile(p!=NULL)printf("%ct",p->data);if(p->rchild!=NULL)si+=p->rchild;p=p->lchild;if(i>0)p=s-i;while(i>0|p!=NULL);void Postordertraverse(BTnode *t)int slM;int i=0;BTnode

6、 *p,*sM;p=t;dowhile(p!=NULL)si=p;sli+=0;p=p->lchild;while(i>0&&sli-1=1)p=s-i;printf("%ct",p->data);free(p);if(i>0)sli-1=1;p=si-1;p=p->rchild;while(i>0);printf("n");int high(BTnode *t)int h,lh,rh;if(!t)return 0;lh=high(t->lchild);rh=high(t->rchild);

7、h=lh?lh+1:rh+1;return h;int leafcount(BTnode *t,int &n)BTnode *p=t;if(p)if(p->lchild=NULL&&p->rchild=NULL)n+;n=leafcount(p->lchild,n);n=leafcount(p->rchild,n);return n;void main()BTnode *t;int n=0;printf("input data: ");t=create();printf("n Preordertraverse: &q

8、uot;);Preordertraverse(t);printf("n Inordertraverse: ");Inordertraverse(t);printf("n the left's number: ");n=leafcount(t,n);printf("%d",n);printf("n the high of the bintree: ");n=high(t);printf("%d",n);printf("n Postordertraverse: ");Po

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论