第6章 树与二叉树3.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 树与二叉树3

6.8 哈 夫 曼 树 与 哈 夫 曼 编 码 最优树的定义 如何构造最优树 前缀编码 哈夫曼树(Huffman树)—— 又称最优二叉树,它是n个带权叶子结点构成的所有二叉树中,带权路径长度WPL最小的二叉树。 教材定义:设有n个权值{w1,w2,……wn},构造一棵有n个叶子结点的二叉树,每个叶子的权值为wi,则WPL最小的二叉树叫哈夫曼树或最优二叉树。 2)不等长编码 一般,在英文字母a—z中,e的使用频率比q,z要大得多 使用频率高的用短码 使用频率低的用长码 3)前缀编码 如何得到使电文长度最短的二进制前缀编码? 假设电文中每种字符出现的次数为Wi, 其编码长度为li ,电文中有n种字符,则电文总长为: 0 1 0 1 0 1 哈夫曼编码: 约定: 树中的左分支表示字符‘0’ 树中的右分支表示字符‘1’ 编码:从根到叶子的路径上分支字符组成的字符串 作为该叶子结点字符的编码。 对Huffman编码器程序的解释: 例6-2 八种字符,其频率分别为: 0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11 数据结构课程的内容 本章小结 简述线性结构与非线性结构的不同点。 作业: 有一份电文中共使用5个字符:a、b、c、d、e, 它们的出现频率依次为5、2、1、6、4。 试画出对应的哈夫曼树,求其WPL,并求出每个字符的哈夫曼编码。 * 有关术语 路径:从树中一个结点到另一个结点之间的分支 构成这两个结点间的路径。 路径长度:路径上的分支数 树的路径长度:从树根到每一个结点的路径长度之和 树的带权路径长度:树中所有带权结点的路径(Weighted Path Length ) 长度之和。 r d c a b 2 4 7 5 例如: 第k个叶子结点到根的路径长度 — 个叶子结点的权值 第 — 叶子结点的个数 其中: 记作: k WPL 1 k k n k l w n lk wk - = ? = 例 有4个结点a,b,c,d,其权值分别为7,5,2,4, 构造有4个叶子结点的二叉树 a b c d 7 5 2 4 WPL=7*2+5*2+2*2+4*2=36 d c a b 2 4 7 5 WPL=7*3+5*3+2*1+4*2=46 a b c d 7 5 2 4 WPL=7*1+5*2+2*3+4*3=35 VS 构造哈夫曼树 Huffman给出构造最优二叉树的算法,具体构造哈夫曼算法的步骤如下:  ⑴ 根据给定的 n 个权值{w1, w2, …, wn}构成 n 棵二叉树的集合 F ={T1, T2, …, Tn} ,其中每棵二叉树 Ti (1≤i≤n) 中只有一个带权为wi的根结点,其左右子树均空; ⑵ 在 F 中选取两棵根结点的权值最小的树作为左右子树,构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左、右子树上根结点的权值之和。  ⑶ 在F中删除这两棵树,同时将新得到的二叉树加入 F 中。  重复(2)和(3),直到 F 只含一棵树为止。这棵树便是所求的赫夫曼树。 例如,对5个权值 {5,6,2,9,7} 构造最优二叉树的过程如动画所示 9 例如: 已知权值 W={ 5, 6, 2, 9, 7 } 5 6 2 7 5 2 7 6 9 7 6 7 13 9 5 2 7 6 7 13 9 5 2 7 9 5 2 7 16 6 7 13 29 0 0 0 0 1 1 1 1 00 01 10 110 111 例:编制一个将百分制转换成五级分制的程序 0~59 ———————————————————— bad 60~69 ———————————————————— pass 70~79 ———————————————————— gen

文档评论(0)

shaofang00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档