- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
09 树和二叉树(四)
Huffman树及其应用 Huffman树 基本概念 两个结点间的路径 由一个结点到另一个结点之间的分支构成 路径长度 路径上的分支数目 树的路径长度 从树根到每个结点的路径长度之和 路径长度最短的二叉树是完全二叉树 结点的带权路径长度 从该结点到树根之间的路径长度与结点上的权的乘积 树的带权路径长度 树中所有叶子结点的带权路径长度之和,记作WPL Huffman树 如 Huffman树 Huffman树 又称赫夫曼树或最优二叉树 假设有n个权值{w1,w2,…wn},试构造一棵有n各叶子结点的二叉树,每个叶子结点带权为wi,则其中带权路径长度WPL最小的二叉树即为Huffman树 权在不同应用中含义不同,如所占比例,出现概率等 Huffman树的应用 用于实现最佳判定算法,让概率最大的事件尽早被判定 用于通信编码,让概率大的字符对应的编码尽可能短 等等 Huffman树 Huffman树 构造Huffman树的一般规律 1) 根据给定的n个权值{w1,w2,…wn},构成n棵二叉树的集合F={T1,T2,…Tn},其中每棵二叉树Ti中只有一个带权为wi的根结点,其左右子树均空 2) 在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左右子树上根结点的权值之和 3) 在F中删除这两棵树,同时将新得到的二叉树加入F中 重复2)和3),直到F中只含一棵树为止。此时得到的便是Huffman树 Huffman树 如:已知事件a,b,c,d对应的权值集合w={7,5,2,4},试设计对应Huffman树 Huffman树 Huffman树 Huffman树 前缀编码(又称Huffman编码) 任一字符的编码都不是另一字符编码的前缀 如 Huffman树 使用Huffman树实现前缀编码 基于:Huffman树是带权路径长度最短的二叉树 方法:以电文出现的n个字符的频率作权, n个字符为叶,生成Huffman树。 编码:由根开始,左子树分支对应编码0,右子树分支对应编码1,为每个叶结点找到由根出发为0、1的序列即为该叶结点的前缀编码。 如下列二叉树,可得到各字符的二进制编码 Huffman树 Huffman树 Huffman树的特征 Huffman树中没有度为1的结点 一棵有n个叶子结点的Huffman树共有2n-1个结点(分支结点共n-1个) 构造Huffman树的算法设计 用大小为2n-1的一维数组来存储Huffman树中的所有结点 每个结点包含结点权值、左右子结点指针和父结点指针(用于求编码) Huffman树 Huffman树的存储结构 构造Huffman树的算法 作业 树形结构总结 二叉树及其性质 二叉树的存储结构 二叉树的遍历方法与应用 Huffman树构造与应用 树的存储 树的遍历方法 树与二叉树的对应关系 已知某二叉树的后序遍历序列是BEDCA, 中序遍历序列是BADEC,则其前序遍历序列是 。(或画出该二叉树) * a b c d 7 5 2 4 c d 4 5 2 7 a b a b b 7 5 4 c 2 WPL = 7*2 +5*2 + 2*2 +4*2 = 36 WPL = 4*2 +7*3 + 5*3 +2*1 = 46 WPL = 7*1 + 5*2 + 2*3 +4*3 = 35 如:将百分制转换为五分制,写出算法,要求比较次数尽可能少。 分数 0~59 60~69 70~79 80~89 90~100 比例数 5% 15% 40% 30% 10% 权 已知成绩分布: 可能的判定算法: a60 a70 a80 a90 不及格 及格 中等 良好 优良 70 a 80 80 a 90 60 a 70 a60 不及格 优良 及格 中等 良好 a80 a70 a90 a60 不及格 及格 中等 良好 优良 a b c d 7 5 2 4 step1 c d 2 4 6 a b 7 5 step2 a 7 c d 2 4 6 b 5 11 step3 a 7 c d 2 4 6 b 5 11 step4 18 如:已知事件a,b,c,d,e,f对应的权值集合w={5,4,7,19,11,8},试设计对应Huffman树 a b c d 5 4 7 19 step1 e f 11 8 a b 5 4 9 c d 7 19 e f 11 8 step2 a b 5 4 9 c d 7 19 e f 11 8 step3 15 a b 5 4 9 c d 7 19 e f 11 8 step4 15 20 a b 5 4 9 c d 7
文档评论(0)