77范文网 - 专业文章范例文档资料分享平台

数据结构实验报告6-二叉树与哈夫曼树

来源:网络收集 时间:2020-06-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

《数据结构与算法》实验指导V2016 实验六 二叉树

【实验目的】

1、掌握二叉树的基本存储表示。

2、掌握二叉树的遍历操作实现方法(递归和非递归方法)。 3、理解并实现二叉树的其他基本操作。

4、掌握二叉树的重要应用---哈夫曼编码的实现。

【实验学时】

4-6学时

【实验预习】

回答以下问题:

1、二叉树的二叉链表存储表示。 typedef struct BiTNode{ // 结点结构

ElemType data ;//数据域

struct BiTNode *Lchild ;//左孩子指针 struct BiTNode *Rchild;//右孩子指针 } BiTNode ,*BiTree ; void Create(BiTree &T)

{//输入扩展二叉树的先序序列,构建二叉链表 scanf(&ch); //输入一个元素 if (ch=='# ') T = NULL; else

{ T= (BiTree)malloc(sizeof(BiTNode));

//申请根结点

T->data =ch; // 给根结点数据域赋值 Create(T->Lchild);//建左子树

Create(T->Rchild);//建右子树 } } // Create

2、二叉树的三种基本遍历方式。 (1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树。简记根-左-右。

(2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树。简记左-根-右。

(3)后序遍历(LRD),首先遍历左子树,然后遍历右子树,最后访问根结点。简记左-右-根。 常熟理工学院计算机科学与工程学院

1

《数据结构与算法》实验指导V2016

3、解释哈夫曼树和带权路径长度WPL。 哈夫曼树:

它是最优二叉树。

定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小,则这棵树被称为哈夫曼树。

路径和路径长度 定义:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。

结点的权及带权路径长度

定义:若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。

树的带权路径长度

定义:树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL。

【实验内容和要求】

1、 编写程序exp6_1.c,实现二叉树的链式存储及基本操作。 以下图所示的二叉树实现二叉树的二叉链表存储及基本操作,回答下列问题,补充完整程序,并调试运行验证结果。

ABCEG∧G∧DF∧E∧F∧∧C∧BDA∧ (1)按照先序序列建立该二叉树。

读入的字符序列应为:________ABCDEFG_________________(*表示空指针)。 (2)该二叉树的三种遍历序列:

先序序列:__ABCDEFG______________; 中序序列:__CBEGDFA______________; 后序序列:__CGEFDBA______________;

(3)按层次遍历该二叉树,得到的序列为:_____ABCDEFG_______。 (4)该二叉树的深度为:__4______。

(5)该二叉树的叶子结点数为:____3_______。

(6)交换该二叉树所有结点的左右次序得到的新二叉树为:(画出新二叉树的图)

常熟理工学院计算机科学与工程学院

2

《数据结构与算法》实验指导V2016 A B D C F E G (7)新二叉树的三种遍历序列分别为:

先序序列:____ABDFEGC______________________; 中序序列:____AFDGEBC______________________; 后序序列:____FGEDCBA______________________;

exp6_1.c参考程序如下: #include #include #define MAX 20

/*---二叉树的二叉链表存储表示---*/ typedef struct BTNode {

char data ; /*结点数据*/ struct BTNode *lchild; /*左孩子指针*/ struct BTNode *rchild ; /*右孩子指针*/ }*BiTree;

/*---非递归遍历辅助队列---*/ typedef struct {

BiTree data[MAX]; int front,rear; } queue;

void createBiTree(BiTree *t); /*先序遍历创建二叉树*/ void PreOrder(BiTree p); /*先序遍历二叉树*/ void InOrder(BiTree p); /*中序遍历二叉树*/ void PostOrder(BiTree p); /*后序遍历二叉树*/ void RPreorder(BiTree p); /*先序遍历的非递归算法*/ void RInorder(BiTree p); /*中序遍历的非递归算法*/ void RPostorder(BiTree p); /*后序遍历的非递归算法*/

常熟理工学院计算机科学与工程学院

3

《数据结构与算法》实验指导V2016 int depth(BiTree t); /*求二叉树的深度算法*/

BiTree gettreenode(char x,BiTree lptr,BiTree rptr);/*后序复制二叉树-建立结点*/ BiTree copytree(BiTree t); /*以后序遍历的方式复制二叉树*/ BiTree swap(BiTree b); /*交换二叉树的结点的左右孩子*/ void ccOrder(BiTree t); /*利用循环队列实现层次遍历*/ int Leaves(BiTree t); /*统计二叉树叶子结点(递归)*/ void release(BiTree t); /*释放二叉树*/

/*先序遍历创建二叉树*/ void createBiTree(BiTree *t) {

char s; BiTree q;

printf(\ s=getchar();

getchar(); /*扔掉存在键盘缓冲区的输入结束回车符*/ if(s=='#') /*子树为空则返回*/ {

*t=NULL; return; }

q=(BiTree)malloc(sizeof(struct BTNode)); if(q==NULL) {

printf(\ exit(0); }

q->data=s; *t=q;

createBiTree(&q->lchild);/*递归建立左子树*/ createBiTree(&q->rchild);/*递归建立右子树*/ }/*createBiTree*/

/*先序遍历二叉树,补充递归算法*/ void PreOrder(BiTree p) {

if(p!=NULL)

{ printf(\ PreOrder (p->lchild);

PreOrder (p->rchild); }

常熟理工学院计算机科学与工程学院

4

《数据结构与算法》实验指导V2016 }/*PreOrder*/

/*中序遍历二叉树,补充递归算法*/ void InOrder(BiTree p) {

if(p!=NULL) { InOrder (p->lchild);

printf(\ InOrder (p->rchild); }

}/*InOrder*/

/*后序遍历二叉树,补充递归算法*/ void PostOrder(BiTree p) {

if(p!=NULL)

{ PostOrder (p->lchild):

PostOrder (p->rchild); printf(\ }

}/*PostOrder*/

/*先序遍历的非递归算法*/ void RPreorder(BiTree p) {

BiTree stack[MAX],q; int top=0,i;

for(i=0; i

while(q!=NULL) {

printf(\

if(q->rchild!=NULL) _____stack[top++]=q->rchild_____; /*右指针进栈*/ if(q->lchild!=NULL) q=q->lchild; /*顺着左指针继续向下*/

else if(top>0) q=stack[--top]; /*左子树访问完,出栈继续访问右子树结点*/ else q=NULL; }

}/*RPreorder*/

/*中序遍历的非递归算法*/

常熟理工学院计算机科学与工程学院

5

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据结构实验报告6-二叉树与哈夫曼树在线全文阅读。

数据结构实验报告6-二叉树与哈夫曼树.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1091707.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: