1. 1、本文档共120页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线索链表的结点结构 ltag和rtag是增加的两个标志域,用来区分结点的左、右指针域是指向其左、右孩子的指针,还是指向其前驱或后继的线索。???? 哈夫曼算法(构造哈夫曼树的方法) (1)、根据 n 个给定的权值 {w1, w2, …, wn} 构成 n 棵二叉树的森林 F={T1, T2, …, Tn},其中 Ti 只有一个带权为 wi 的根结点。 (2)、在 F 中选取两棵根结点的权值最小的树作为左右子树,构造 一棵新的二叉树,且置新的二叉树的根结点的权值为其左右 子树上根结点的权值之和。 (3)、在 F 中删除这两棵树,同时将新得到的二叉树加入森林中。 (4)、重复 (2) 和 (3),直到森林中只有一棵树为止,这棵树即为 哈夫曼树。 构造森林全是根 选用两小造新树 重复 2、3 剩单根 删除两小添新人 哈夫曼算法口诀:1、构造森林全是根; 2、选用两小造新树; 3、删除两小添新人; 4、重复 2、3 剩单根。 例:有4 个结点 a, b, c, d,权值分别为 7, 5, 2, 4,构造哈夫曼树。 a 7 b 5 c 2 d 4 a 7 b 5 2 4 6 c d 11 a 7 b 5 2 4 6 c d 11 18 哈夫曼树的结点的 度数为 0 或 2, 没 有度为 1 的结点。 包含 n 个叶子结点 的哈夫曼树中共有 2n – 1 个结点。 包含 n 棵树的森林要经过 n–1 次合并才 能形成哈夫曼树,共产生 n–1 个新结点 a 7 b 5 2 4 c d 6 由二叉树 的性质 3 例:有5 个结点 a, b, c, d, e,权值分别为 7, 5, 5, 2, 4, 构造哈夫曼树。 2 4 d e a 7 a 7 b 5 c 5 d 2 e 4 a 7 b 5 c 5 b 5 c 5 10 2 4 6 d e 6 a 7 2 4 6 d e 13 b 5 10 c 5 a 7 2 4 6 d e 13 b 5 10 c 5 23 a60 a70 a80 a90 E D C B A Y Y Y Y N N N N 5% 15% 40% 30% 10% 31500次 E 5% A 10% D 15% a60 60≤a70 B 30% 80≤a90 C 40% 70≤a80 Y Y Y Y N N N N a80 a90 a70 a60 E Y D C B A N Y Y Y N N N 22000次 最佳判定树 ▲ 6.6.2 哈夫曼编码 哈夫曼树的应用很广,哈夫曼编码就是其在电讯通信中的应 用之一。在电讯通信业务中,通常用二进制编码来表示字母或其 他字符,并用这样的编码来表示字符序列。 例:如果需传送的电文为 ‘ABACCDA’,它只用到四种字符,用 两位二进制编码便可分辨。假设 A, B, C, D 的编码分别为 00, 01, 10, 11,则上述电文便为 ‘00010010101100’(共 14 位),译码员 按两位进行分组译码,便可恢复原来的电文。 能否使编码总长度更短呢? 实际应用中各字符的出现频度不相同 数据的最小冗余编码问题 用短(长)编码表示频率大(小)的字符 使得编码序列的总长度最小,使所需总空间量最少 在上例中,若假设 A, B, C, D 的编码分别为 0,00,1,01, 则电文 ‘ABACCDA’ 便为 ‘000011010’(共 9 位)。 但此编码存在多义性:可译为 ‘BBCCDA’、‘ABACCDA’、 ‘AAAACCACA’ 等。 要求任一字符的编码都不能是另一字符编码的前缀! 这种编码称为前缀编码(其实是非前缀码)。 译码的惟一性问题 利用最优二叉树可以很好地解决上述两个问题 在编码过程要考虑两个问题 数据的最小冗余编码问题 译码的惟一性问题 以电文中的字符作为叶子结点构造二叉树。然后将二叉树中 结点引向其左孩子的分支标 ‘0’,引向其右孩子的分支标 ‘1’; 每 个字符的编码即为从根到每个叶子的路径上得到的 0, 1 序列。如 此得到的即为二进制前缀编码。

文档评论(0)

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

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

1亿VIP精品文档

相关文档