《CH9树》-课件设计(公开).pptVIP

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
定义(根子树)设T为一棵根树,a为T中一个顶点,且a不是树根,称a及其后代导出的子图T’为T的以a为根的子树,简称根子树。 以v2为根的子树 以v3为根的子树 在应用中,往往将同层上的顶点或它们所关联的边排序 定义(有序树)如果将根树每一层上的顶点都规定次序,这样的根树称为有序树。 次序可排在顶点处,也可以排在边上。次序常常是从左向右,不一定是连续的 根据每个分支点的儿子数以及是否有序,可将根树分成若干类: 定义(根树分类)设T为一棵根树: 1.?若T的每个分支点至多有r个儿子,则称T为r叉(元)树; 2.? 若T的每个分支点都恰好有r个儿子,则称T为正则r叉树; 3.? 若r叉树T是有序的,则称T是r叉有序树; 4.? 若正则r叉树T是有序的,则称T是正则r叉有序树; 5.? 若T是r叉正则树,且所有树叶的层数相同,都等于树高,则称T为正则完全r叉树; 6.? 若正则完全r叉树T是有序树,则称T是正则有序完全r叉树。 在所有的正则有序r叉树中,正则有序2叉树最重要。 根树分类: 三叉树 正则三叉树 正则完全三叉树 正则完全有序二叉树 哈夫曼编码 HUFFMAN编码由美国数学家David Huffman创立的,是一种可变长编码方式,是二叉树的一种特殊转化形式。 编码的原理是:将使用次数多的代码转换成长度较短的代码,而使用次数少的可以使用较长的编码,并且保持编码的唯一可解性。 1952年,David A. Huffman在麻省理工攻读博士时所发明的,并发表于《一种构建极小多余编码的方法》(A Method for the Construction of Minimum-Redundancy Codes)一文。 定义(最优二叉树)设2叉树T有t片树叶,分别带权为w1,w2,…,wi,…,wt(wi为实数,i=1,2,,… t,称W(T)=∑i=1twi L(vi)为树T的权,其中L(vi)为带权wi的树叶vi的层次。 在所有的带权w1,w2,…,wi,…,wt的二叉树中,带权最小的二叉树称为最优二叉树。 哈夫曼树 T1 T2 W(T1)=1*2 + 2*3 +3*3 + 4*2 +5*6 + 6*3 =58 树的权: W(T2)=1*2 + 2*2 +3*2 + 4*3 +5*4 + 6*4 =68 下图所示的3棵树,都是带权1,3,4,5,6的二叉树。 5 6 3 1 4 6 3 1 4 5 6 3 4 1 5 W(T1)=47, W(T2)=54, W(T3)=42 Huffman(哈夫曼)算法: 给定树叶的权w1,w2,……Wt,且w1=w2=….=wt. 1.连接权为w1,w2的两片树叶,得一分支点,其权为w1+w2 2.在w1+w2,w3, ……Wt中选出两个最小的权,连接它们 对应顶点(不一定是树叶),得新分支点及所带的权。 3.重复2,直到形成t-1个分支点、t片树叶为止。 求带权为1,3,4,5,6的最优2叉树 剩4,4,5,6参加运算 剩5,6,8参加运算 剩8,11参加运算 W(T)=42 但由Huffman算法得到的树一定是最优树。 6 3 1 4 5 最优树不一定是唯一的 练习: 求带权为2,4,5,7,10,13的最优2叉树 W(T)=99 最优2叉树:可以产生最佳前缀码 定义(前缀):设?=?1?2…?n-1?n为长度是n的符号串,称其子串?1,?1?2,…,?1?2…?n-1分别为?的长度为1,2,···,n-1的前缀。 例:ab7yu的前缀为:a,ab,ab7,ab7y b7y不是ab7yu的前缀 定义(前缀码):设B={?1,?2,…,?m}为一个符号串集合,若对于任意的?i,?j ? B,i≠j,?i与?j互不为前缀,则称B为前缀码.若? i(i=1,2,···,m)中只出现2个符号(如0,1),则称B为2元前缀码. 例:{0,10,110,111}, {1,01,001,0001}是2元前缀码 {1,11,101,001,0011}不是前缀码 P204: 9.9 由一棵2叉树可以产生一个前缀码 设T为一棵2叉树,有t片树叶 将T的每个分支点关联的2条边,左边标上0,右边标上1 若某分支点处只有一个儿子,对应的边标上0或1均可 从树根到每片树叶的通路上标注的数字组成一个符号串,记在树叶处 这样得到的t个符号串?1,?2,…,?t组成的集合B为前缀码 前缀码例子: 前缀码为:{000,001,01,110,111} 前缀码例子 P204: 9.10 由一个前缀码可以产生一棵二叉树: 给定一个前缀码,画一棵二叉树:0对应分支点的左子结点,1对应分支点的右子结点,从树根画出前缀码每个符号串所对应的结点,便得到给定前缀码的二叉

文档评论(0)

咪蒙 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档