欢迎来到天天文库
浏览记录
ID:12784981
大小:292.00 KB
页数:44页
时间:2018-07-19
《南邮实验报告_二叉树及哈夫曼编码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告(2013/2014学年第二学期)课程名称数据结构A实验名称实验二二叉树的基本操作及哈夫曼编码译码系统的实现实验时间2014年4月8日指导单位计算机学院计算机软件教学中心指导教师朱立华学生姓名班级学号学院(系)专业实验报告实验名称实验二二叉树的基本操作及哈夫曼编码译码系统的实现指导教师朱立华实验类型设计实验学时2实验时间2014.4.8一、实验目的和要求(1)掌握二叉链表上实现二叉树基本去处的方法。(2)学会设计基于遍历的求解二叉树应用问题的递归算法。(3)理解哈夫曼树的构造算法,学习设计哈夫曼编码和译码系统
2、。二、实验环境(实验设备)硬件:微型计算机软件:MicrosoftVisualC++6.0三、实验原理及内容实验题一:在二叉链表上实现二叉树运算(1)设计递归算法,实现下列二叉树运算:删除一棵二叉树、求一棵二叉树的高度、求一棵二叉树中叶子结点数、复制一棵二叉树、交换一棵二叉树的左右子树。(2)设计算法,按自上到下,从左到右的顺序,按层次遍历一棵二叉树。(3)设计main函数,测试上述每个运算。43实验报告#includeusingnamespacestd;templatestruc
3、tBTNode{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(){root=NULL;}43实验报告~B
4、inaryTree(){Clear(root);}boolIsEmpty()const;voidClear();boolRoot(T&x)const;BTNode*Root();voidMakeTree(constT&e,BinaryTree&left,BinaryTree&right);voidBreakTree(T&e,BinaryTree&left,BinaryTree&right);voidPreOrder(void(*Visit)(T&x));voidInOrder(void(
5、*Visit)(T&x));voidPostOrder(void(*Visit)(T&x));intSize();intLeaves();BTNode*Copy(BTNode*t);intCount(){returnCount(root);}voidExchange();protected:BTNode*root;private:voidExch(BTNode*p);43实验报告voidLeaves(BTNode*t,int&count);intSize(BTNode*t);int
6、Count(BTNode*t){if(!t)return0;if(((t->lChild)&&(!t->rChild))
7、
8、((!t->lChild)&&(t->rChild)))return1;returnCount(t->lChild)+Count(t->rChild);}voidClear(BTNode*t);voidPreOrder(void(*Visit)(T&x),BTNode*t);voidInOrder(void(*Visit)(T&x),BTNode*t);voidPostO
9、rder(void(*Visit)(T&x),BTNode*t);};templatevoidBinaryTree::Exchange(){Exch(root);}templatevoidBinaryTree::Exch(BTNode*p){//privateif(p!=NULL){BTNode*temp;43实验报告temp=p->lChild;p->lChild=p->rChild;p->rChild=temp;Exch(p->lChild);Exch
10、(p->rChild);}}templatevoidVisit(T&x){cout<BTNode*BinaryTree::Root(){returnroot;}templatevoidBinaryTree::Clear(BTNode*t)
此文档下载收益归作者所有