二叉树new.ppt

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

哈夫曼树 基本概念 路径:从树中一个结点到另一个结点之间的分支。 路径长度:路径上的分支数目称为路径长度。 树的路径长度:从树根到每一结点的路径长度之和。 结点的带权路径长度:从该结点到树根之间的路径长度与结点上 的权值的乘积。 树的带权路径长度:树中所有叶子结点的带权路径长度之和。通常 记作 结点的带权路径长度:从该结点到树根之间的路径长度与结点上 的权值的乘积。 树的带权路径长度:树中所有叶子结点的带权路径长度之和。通常 记作 结点的带权路径长度:从该结点到树根之间的路径长度与结点上 的权值的乘积。 树的带权路径长度:树中所有叶子结点的带权路径长度之和。通常 记作 哈夫曼编码树重温 结点的带权路径长度:从该结点到树根之间的路径长度与结点上 的权值的乘积。 树的带权路径长度:树中所有叶子结点的带权路径长度之和。通常 记作 哈夫曼树:设有n个权值{w1,w2,……wn},构造一棵有n个叶子结点 的二叉树,每个叶子的权值为wi,WPL最小的二叉树。 构造哈夫曼树的过程(哈夫曼算法) 根据给定的n个权值{w1,w2,……wn},构造n棵只有根结点的二叉树,令初始权值为wj; 在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点权值之和; 在森林中删除这两棵树,同时将新得到的二叉树加入森林中; 重复上述两步,直到只含一棵树为止,这棵树即哈夫曼树。 w={5,29,7,8,14,23,3,11},构造哈夫曼树 例 设给定权值分别为2,4,5,7,9的四个结点,构造了形状不同的二叉树。请分别计算它们的带权路径长度。 哈夫曼树应用------判定树 哈夫曼树应用------判定树 例2 例2 哈夫曼解码 从哈夫曼树根开始,从待译码电文中逐位取码。 若编码是“0”,则向左走;若编码是“1”,则向右走,一旦到达叶子结点,则译出一个字符; 再重新从根出发,直到电文结束。 解释一下为什么哈夫曼树的形态不唯一,以这道题为例。 哈夫曼树地结点总数为2*m-1。M为叶子结点的个数。 在很多问题的处理过程中,需要进行大量的判断,这些判断结构的设计直接影响着程序的执行效率。利用哈夫曼树可以得到最佳判定算法。 本例题的问题描述: 编制一个将百分制转换成5分制的程序。 因为在实际生活中,学习成绩在5个等级上分布是不均匀的,且每次输入量较大,所以应该考虑程序的质量问题,即程序的执行时间问题。 本图是将上页的第2个图的两次比较分开。 因为B和C的出现概率较大,因此,应该位于离根较近的位置,所以分解成上面的结果。80成为树根。 假设输入数据10000个,则比较次数为22000次。 根据编码可以发送报文。使报文的总长度最短。 其中,Wk叶子结点的权值,lk叶子结点的路径长度。 加权后路径长度最小的并非是完全二叉树,而是权大的叶子离根最近的二叉树。 哈夫曼树的形态不是唯一的,但对具有一组权值的各哈夫曼树的WPL是唯一的。 * (1) 根据给定的 n 个权值 {w1,w2, … wn} 构成 n 棵二叉树的集合 F = {T1,T2, … Tn},其中每棵二叉树 Ti 中只有一个权值为 wi 的根结点。 (2) 在 F 中选取两棵根结点权值最小的树作为左、右子树构造一棵新的二叉树,且置新二叉树的根结点的权值为其左、右子树根结点的权值之和。 (3) 在 F 中删除这两棵树,同时将新得到的二叉树加入集合 F 中。 (4) 重复 (2) 和 (3) ,直到 F 中只含一棵树为止。 构造Huffman编码树 * 例, 4 个叶子结点 a、b、c、d,分别带权7、5、2、4。 c d 2 4 b 5 a 7 初始 c d 2 4 6 b 5 c d 2 4 6 11 a 7 b 5 c d 2 4 6 11 18 构造Huffman编码树 8 5 3 11 19 23 42 29 14 8 7 15 29 58 100 WPL= (23+29) *2 + (11+14) *3+(3+5+7+8)*4=271 w={5,29,7,8,14,23,3,11} w={29,7,8,14,23,11,8} w={29,14,23,11,8,15} w={29,14,23,15,19} w={29,23,19,29} w={29,29,42} w={42,58} w={100} 2

文档评论(0)

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

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

1亿VIP精品文档

相关文档