二叉树与哈夫曼编码.doc

二叉树与哈夫曼编码.doc

ID:55924776

大小:189.74 KB

页数:33页

时间:2020-06-15

二叉树与哈夫曼编码.doc_第1页
二叉树与哈夫曼编码.doc_第2页
二叉树与哈夫曼编码.doc_第3页
二叉树与哈夫曼编码.doc_第4页
二叉树与哈夫曼编码.doc_第5页
资源描述:

《二叉树与哈夫曼编码.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验报告(2014/2015学年第二学期)课程名称数据结构实验名称实验二二叉树的基本操作及哈夫曼编码译码系统的实现实验时间2015年10月31日指导单位计算机软件学院指导教师骆健学生姓名陈兵班级学号B14041126学院(系)计软院专业软嵌NIIT实验报告实验名称实验二二叉树的基本操作及哈夫曼编码译码系统的实现指导教师骆健实验类型设计实验学时2实验时间一、实验目的和要求(1)掌握二叉链表上实现二叉树基本去处的方法。(2)学会设计基于遍历的求解二叉树应用问题的递归算法。(3)理解哈夫曼树的构造算法,学习设计哈夫曼编码和译码系统。二、实验环境(实验设备)硬件:

2、微型计算机软件:MicrosoftVisualC++6.0三、实验原理及内容实验题一:在二叉链表上实现二叉树运算(1)设计递归算法,实现下列二叉树运算:删除一棵二叉树、求一棵二叉树的高度、求一棵二叉树中叶子结点数、复制一棵二叉树、交换一棵二叉树的左右子树。(2)设计算法,按自上到下,从左到右的顺序,按层次遍历一棵二叉树。(3)设计main函数,测试上述每个运算。内容:1、建立头文件BTree.H,在该文件中定义二叉树的链式存储结构,并编写二叉树的各种基本操作实现函数。同时建立一个验证操作实现的主函数文件Test.cpp,编译并调试程序,直到正确运行。注意:

3、需要用到队列的有关操作。实验报告32(一)概要设计1.流程图及设计思想用maketree构造一棵二叉树创建二叉树删除二叉树先删除左子树再删除右子树,最后删除根节点,再释放结点空间左右子树高度之和进行比较,谁大谁就是树的高度树的高度本质就是交换每个结点的左右子树左右交换用队列实现,将跟结点入队。一:出队并输出节点的值。二:若存在左右孩子,则将其入队。循环以上两个步骤,直到队列为空。运用后序遍历思想,把树分解为左右子树和跟结点节点数量层次遍历二叉树根据二叉树的定义和遍历算法的定义,和很容易实现递归遍历二叉树实验报告32代码:#include

4、usingnamespacestd;templatestructBTNode{BTNode(){lChild=rChild=NULL}BTNode(constT&x){element=x;lChild=rChild=NULL;}BTNode(constT&x,BTNode*l,BTNode*r){element=x;lChild=l;rChild=r;}Telement;BTNode*lChild,*rChild;};templateclassBinaryTree{public:BinaryTree(){r

5、oot=NULL;}~BinaryTree(){};boolIsEmpty()const;voidClear();32boolRoot(T&x)const;voidMakeTree(constT&x,BinaryTree&left,BinaryTree&right);voidMakeTree(BTNode*r);voidBreakTree(T&x,BinaryTree&left,BinaryTree&right);voidDeleteTree();voidPreOrder(void(*Visit)(T&x));intGetTr

6、eeHeight()const;intGetLeavesNumber()const;BTNode*CopyTree()const;voidExchangeChildTree();protected:BTNode*root;private:voidClear(BTNode*&t);voidPreOrder(void(*Visit)(T&x),BTNode*t);voidDeleteTree(BTNode*t);intGetTreeHeight(BTNode*t)const;intGetLeavesNumber(BTNode

7、*t)const;BTNode*CopyTree(constBTNode*t)const;voidExchangeChildTree(BTNode*t);};templateboolBinaryTree::Root(T&x)const{if(root){x=root->element;returntrue;}else{32returnfalse;}}templatevoidBinaryTree::MakeTree(constT&x,BinaryTree&left,BinaryTree

8、&right){if(root

9、

10、&left==&right

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

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

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