第5章树和二叉树4.ppt
《第5章树和二叉树4.ppt》由会员分享,可在线阅读,更多相关《第5章树和二叉树4.ppt(39页珍藏版)》请在第壹文秘上搜索。
1、5.1 5.1 树的概念和基本操作树的概念和基本操作5.2 5.2 二叉树二叉树 5.3 5.3 树和森林树和森林5.4 5.4 哈夫曼树及其应用哈夫曼树及其应用5.5 5.5 应用举例应用举例v5.4.1 哈夫曼树的基本概念哈夫曼树的基本概念v5.4.2 哈夫曼树的构造算法哈夫曼树的构造算法v5.4.3 哈夫曼编码哈夫曼编码v5.4.4 哈夫曼编码的算法实现哈夫曼编码的算法实现1.1.路径路径:从树中一个结点到另一个结从树中一个结点到另一个结点之间的分支构成两个结点之间的点之间的分支构成两个结点之间的路径路径.2.2.路径长度路径长度:是指从根结点到该结点的是指从根结点到该结点的路径上分支的
2、数目。路径上分支的数目。3.3.树的路径长度树的路径长度:从树根到每个结点的从树根到每个结点的路径长度之和。完全二叉树就是这路径长度之和。完全二叉树就是这种路径长度最短的二叉树种路径长度最短的二叉树.4.4.结点的结点的带权带权路径长度路径长度:是从该结点到:是从该结点到树根之间的路径长度与结点上权值的树根之间的路径长度与结点上权值的乘积乘积.5.5.树的带权树的带权路径长度路径长度:树中所有:树中所有叶子叶子结结点的带权路径长度之和点的带权路径长度之和.通常记作通常记作:n nWPL=wWPL=wk kl lk k k=1k=1其中:其中:WWk k:第:第k k个叶子结点的权值;个叶子结点
3、的权值;L Lk k:第:第k k个叶子结点的路径长度个叶子结点的路径长度.v6.6.哈夫曼树(最优二叉树)哈夫曼树(最优二叉树)是指对于一组带有确定权值的叶子结点构是指对于一组带有确定权值的叶子结点构造的具有最小带权路径长度的二叉树。造的具有最小带权路径长度的二叉树。即:即:设有给定的设有给定的 n n 个权值个权值 w w1 1,w,w2 2,w,wn n,构造一棵由构造一棵由 n n个叶子结点的个叶子结点的,每个叶子结点每个叶子结点的带权为的带权为 w wi i,则其中带权路径长度则其中带权路径长度 WPLWPL最最小的小的二叉树称为最优树或哈夫曼树二叉树称为最优树或哈夫曼树.27549
4、WPL=72+52+23+43+92 =60WPL=74+94+53+42+21 =89 7 9 254 根据给定的根据给定的 n n 个权值个权值 w w1 1,w,w2 2,w,wn n,构造构造 n n 棵二叉树的集合棵二叉树的集合 F F=T=T1 1,T,T2 2,T,Tn n,其中每棵二叉树中均只含一个带权值其中每棵二叉树中均只含一个带权值 为为 w wi i 的根结点的根结点,其左、右子树为空树其左、右子树为空树;(1)(哈夫曼算法)以二叉树为例:在在 F 中选取其根结点的权值中选取其根结点的权值为最小的两棵二叉树,分别作为为最小的两棵二叉树,分别作为左、右子树构造一棵新的二叉树
5、,左、右子树构造一棵新的二叉树,并置这棵新的二叉树根结点的权并置这棵新的二叉树根结点的权值为其左、右子树根结点的权值值为其左、右子树根结点的权值之和之和;(2)从F中删去这两棵树,同时加入 刚生成的新树;重复(2)和(3)两步,直至 F 中只 含一棵树为止。(3)(4)例如:已知权值 W=8,6,2,4 构造哈夫曼树的过程4862246868612246第一步第一步:第二步第二步:第三步第三步:图图5-23 构造哈夫曼树的过程第四步第四步:861224620图图5-23 构造哈夫曼树的过程v由哈夫曼树的定义,一棵二叉树要使其WPL值最小,必须使权值越大的叶子结点越靠近根结点,而权值越小的叶子结
6、点越靠远离根结点。在构造哈夫曼树时,可设置一个结构数组在构造哈夫曼树时,可设置一个结构数组HuffNodeHuffNode保存各结点的信息,数组保存各结点的信息,数组HuffNodeHuffNode的的大小为:大小为:2n-1,2n-1,数组元素的结构形式:数组元素的结构形式:weight lchild rchild parent结点的权值结点的权值1.1.前缀编码前缀编码在电报传送的过程中在电报传送的过程中,传送的电文以二进制代传送的电文以二进制代码作为电报编码码作为电报编码.例如例如:电文电文:“:“ABAACCBADCA”,ABAACCBADCA”,电文中只含电文中只含四个字符四个字符:
7、A,B,C,D,A,B,C,D,每个字符用两位每个字符用两位定长定长编编码码,例如:例如:A:00;A:00;B:01B:01;C:10C:10;D:11D:11.则上述电文可译为则上述电文可译为:00000101000000001010101001010000111110100000 A B AA CC B A D C AA B AA CC B A D C A总长总长2222位位,接收方按两位一组译码即可接收方按两位一组译码即可.由于采用定长编码的电文总长无法缩短由于采用定长编码的电文总长无法缩短,因此因此,对字符采用对字符采用不定长不定长编码编码.且让电文中且让电文中出现次数较多的字符采用
8、尽可能短的编出现次数较多的字符采用尽可能短的编码码,从而尽可能的减小电文总长从而尽可能的减小电文总长.例如例如:上例中上例中,A,CA,C出现的频率较高出现的频率较高,对对A,A,B B,C,C,D D的编码分别为的编码分别为:0,0,0000,1,1,0101,则电文总则电文总长长:14:14位的二进制串位的二进制串:“:“0000011000011000000110000110”,”,长度长度缩短了但译码出现的困难缩短了但译码出现的困难.前缀编码前缀编码:是指任何一个字符的编码都不是指任何一个字符的编码都不是另一个字符编码的前缀是另一个字符编码的前缀.2.2.哈夫曼编码哈夫曼编码以每种字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉