数据结构哈夫曼树和哈夫曼编码.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构哈夫曼树和哈夫曼编码.pptx》由会员分享,可在线阅读,更多相关《数据结构哈夫曼树和哈夫曼编码.pptx(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6.8 哈夫曼树与哈夫曼编码 1.1.最优二叉树的定义最优二叉树的定义 2.2.如何构造最优二叉树如何构造最优二叉树 3.3.前缀编码前缀编码 第1页/共55页树的路径长度定义为:最优二叉树的定义从根结点到该结点的路径上分支的数目。结点的路径长度定义为:树中每个结点的路径长度之和。ACBED树的路径长度为5 第2页/共55页最优二叉树的定义 树的带权路径长度定义为:树中所有叶子结点的带权路径长度之和 WPL(T)=wklk(对所有叶子结点)nk=1ABCHIDEFG75249WPL(T)=7 2+5 2+2 3+4 3+9 2=60第3页/共55页最优二叉树的定义ABHDGCIFE74952W
2、PL(T)=7 4+9 4+5 3+4 2+2 1=89 第4页/共55页最优二叉树的定义 最优二叉树定义为:带权路径长度WPL最小的二叉树,又称为哈夫曼树。第5页/共55页例如:已知权值 W=5,6,2,9,7 95627769713952761)2)3)527哈夫曼树 第6页/共55页WPL=2 3+5 3+6 2+7 2+9 2=65哈夫曼树713952764)16713952765)1629第7页/共55页练习:已知权值 W=5,6,2,9,8 9562876865271)2)3)529哈夫曼树8913第8页/共55页4)5)WPL=2 3+5 3+6 2+8 2+9 2=67哈夫曼树
3、6527891317652789131730第9页/共55页哈夫曼树(哈夫曼算法)以二叉树为例:1.根据给定的n 个权值w1,w2,wn,构造n 棵二叉树的集合F=T1,T2,Tn,其中每棵二叉树中均只含一个带权值为wi 的根结点,其左、右子树为空树;第10页/共55页 2.在 F 中选取其根结点的权值为最小的两棵二叉树,分别作为左、右子树构造一棵新的二叉树,并置这棵新的二叉树根结点的权值为其左、右子树根结点的权值之和;哈夫曼树第11页/共55页 3.从F中删去这两棵树,同时将刚生成的新树加入到F中;4.重复(2)和(3)两步,直至 F 中只含一棵树为止。哈夫曼树第12页/共55页哈夫曼树特点
4、:1、有n个叶子结点2、没有度为1的结点3、总的结点数为 2n-14、深度n-15、形态不唯一第13页/共55页编码编码:用二进制数表示字符例如:ASCII码,扩展的ASCII码特点:等长编码第14页/共55页编码假设有8个符号:a0a1a2a3a4a5a6a7000001010011100101110111第15页/共55页前缀编码有时候,每个字符出现的频率不一样,采用变长编码,使得出现频率多的编码短,频率低的编码长假设 A 0.4 B 0.3 C 0.2 D 0.1ABCD0100010001011?第16页/共55页前缀编码 任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。利
5、用哈夫曼树可以构造一种不等长的二进制编码,并且构造所得的哈夫曼编码是一种最优前缀编码,即:所传电文的总长度最短。第17页/共55页前缀编码ABCDE67259假设有5个符号以及它们的频率:求前缀编码第18页/共55页95271667132901010011000110010111前缀编码1、建立哈夫曼树2、对边编号3、求出叶子结点的路径4、得到字符编码ABCDE67259000110010111第19页/共55页EDC716AB132901010011前缀编码如何译码?001011110001?ADECBABCDE000110010111第20页/共55页回朔策略回朔策略假设问题的解为 n 元
6、组(x1,x2,xn),其中 xi 取值于集合 Si。n 元组的子组(x1,x2,xi)(in)的一个合法布局时,输出之。*/if(in)输出棋盘的当前布局;else for(j=1;jn)else while(!Empty(Si)从 Si 中取 xi 的一个值 viSi;if (x1,x2,xi)满足约束条件 B(i+1,n);/继续求下一个部分解 从 Si 中删除值 vi;/B第26页/共55页回朔策略回朔策略求幂集求幂集ABCABACBCABC第27页/共55页回朔策略回朔策略求幂集求幂集000100000010100110000001010011100101110111000第28页/
7、共55页回朔策略回朔策略求幂集求幂集void powerSet(int num)if(num=len-1)for(int i=0;i2;i+)if(i=0)masknum=1;elsemasknum=0;powerSet(num+1);elsefor(int j=0;j1)的各棵树中,(1)高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?(2)高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点?【答案】(1)结点个数为n时,高度最小的树的高度为2,有2层;它有n-1个叶结点,1个分支结点;(2)高度最大的树的高度为n,有n层;它有1个叶结点,n-1个分支结点。第34页/共5
8、5页例题讲解例题讲解2、试分别找出满足以下条件的所有二叉树:(1)二叉树的前序序列与中序序列相同;(2)二叉树的中序序列与后序序列相同;(3)二叉树的前序序列与后序序列相同。【解答】(1)二叉树的前序序列与中序序列相同:空树或缺左子树的单支树;(2)二叉树的中序序列与后序序列相同:空树或缺右子树的单支树;(3)二叉树的前序序列与后序序列相同:空树或只有根结点的二叉树。第35页/共55页例题讲解例题讲解3、深度为k(根的层次为1)的完全二叉树至少有多少个结点?至多有多少个结点?k与结点数目n之间的关系是什么?【分析】由完全二叉树的定义可知,对于k层的完全二叉树,其上的k-1层是一棵深度为k-1的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 哈夫曼树 哈夫曼 编码
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内