二叉树基本操作及哈夫曼编译译码系统实现.docxVIP

  • 9
  • 0
  • 约6.25千字
  • 约 13页
  • 2018-09-17 发布于浙江
  • 举报

二叉树基本操作及哈夫曼编译译码系统实现.docx

二叉树基本操作及哈夫曼编译译码系统实现

实 验 报 告 (2015/2016学年 第2学期) 课程名称 数据结构A 实验名称 二叉树的基本操作及哈夫曼编译译码 系统的实现 实验时间 2016 年 4 月 13 日 指导单位 计算机科学与技术系 指导教师 骆健 学生姓名 班级学号 学院(系) 管理学院 专 业 信息管理与信息系统 实验一:二叉树基本操作 问题陈述 在二叉链表上实现二叉树的建立、删除、求高度、求子叶节点数、左右交换、遍历等操作。 概要设计 建立不同函数,分别实现二叉树的各项基本运算。 详细设计 1.层次结构:文件一共需要5个函数。 文件中包含各个函数函数的声明。 分别是:status createbitree(bitree *t); status preordertraverse(bitree t); int height(bitree t); void swap(bitree *t); void leafcounts(bitree t); 2.核心算法: 主函数 开始 开始 输入数值并建树 输入数值并建树 进行翻转求高度求子叶数先序遍历 进行翻转 求高度 求子叶数 先序遍历 退出 退出 结束 结束 程序代码 #includeiostream.h #includemalloc.h #define FALSE 0 #define TRUE 1 #define OK 1 #define maxsize 100 typedef int status; typedef int elemtype; typedef struct binode { elemtype data; struct binode *lchild,*rchild; }binode,*bitree; status treecreated=FALSE; int leafcount=0; status createbitree(bitree *t); status preordertraverse(bitree t); int height(bitree t); void swap(bitree *t); void leafcounts(bitree t); void main() { int choice=0; status leave=FALSE,flag; binode *bt; cout===========二叉树演示程序===============endl; do { cout1:创建二叉树,按先序遍历结果输入endl; cout2:先序遍历二叉树,递归方式遍历二叉树 endl; cout3:求叶子数endl; cout4:计算二叉树的高度endl; cout5: 树进行左右翻转endl; cout0:退出endl; cout-------请输入:endl; cinchoice; switch(choice) { case 1: if(treecreated) { cout树还没有建立endl; break; }; cout请输入代表树的数字:endl; flag=createbitree(bt); if(flag==OK) { cout你已经建立了一棵树了!endl; treecreated=TRUE; } break; case 2: if(!treecreated) { coutsorry,you must create a tree for further steps!endl; break; } cout先序遍历顺序:endl; preordertraverse(bt); coutendl; break; case 3: if(!treecreated) { coutsorry,you must create a tree for further steps!endl; break; } leafcounts(bt); cout树的叶子数:leafcountendl; coutendl; break; case 4: int h; h=height(bt); cout树的高度:hendl; break; case 5: swap(bt); cout树已经翻转!!!endl; break; case 0: lea

文档评论(0)

1亿VIP精品文档

相关文档