数据结构-高职计算机-97484-第五章树幻灯片.ppt

数据结构-高职计算机-97484-第五章树幻灯片.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.6.1哈夫曼树 例4:计算图5.20二叉树的WPL。 WPL(T)=1×2 + 8×2 + 5×3 + 7×4 + 2×2=65 5.6.2哈夫曼树的构造算法 哈夫曼最早提出了带有一般规律的哈夫曼树的构造算法,也叫哈夫曼算法。 哈夫曼算法如下: (1)根据n个权值{w1, w2, … , wn}构成n棵二叉树的集合F={T1, T2, …, Tn},其中每棵二叉树Ti只有一个带权为Wi的根结点,其左右子树均空。 (2)在F中选两棵根结点的权值最小的树作为左右子树构成一棵新的二叉树,且根结点的权值为其左右子树根结点的权值之和。 (3)在F中删除这两棵树,同时将新的二叉树加入F (4)重复(2)、(3),直到F只含一棵树为止。 5.6.2哈夫曼树的构造算法 例:已知权值W={5,6,2,10,7},请构造一棵哈夫曼树。 第一步:选择权值为5、2的结点构成一棵新的二叉树 第二步:在F={7、6、10、7}中选择6、7树作为左右子树构成一棵新的二叉树 第三步:在F={13、10、7}中选择10、7作为左右子树构成一棵新的二叉树 第四步:在F={17、13}中只能选择17、13作为左右子树构成一棵新的二叉树 第五步:至此,F={30}仅含有一棵树。 由上述构造算法可知,哈夫曼树的形式不唯一。 5.6.3哈弗曼编码 哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做哈夫曼编码。哈夫曼编码是二进制编码形式,用于(网络)通信中,它作为一种最常用无损压缩编码方法,在数据压缩程序中具有非常重要的应用。 如需传送字符串‘ABACCDA’,只有4种字符:A、B、C、D,只需两位编码。如分别编码为00、01、10、11,上述字符串的二进制总长度为14位。 在传送信息时,希望总长度尽可能短,可对每个字符进行不等长度的编码,且出现频率高的字符编码尽量短。如A、B、C、D的编码分别为 0、00、1、01时,上述电文长度会缩短,但可能有多种译法。如‘0000’可能是‘AAAA’ , ‘ABA’ , ‘BB’。若要设计不等长编码,任一字符的编码都不是另一个字符编码的前缀,在译码时,无论前缀编码多长多短都可以准确的得到译码结果。这种编码称为前缀编码。例如:编码:0、00、1、01就不是前缀编码。 5.6.3哈弗曼编码 哈夫曼树可以用来构造前缀编码,并使得该前缀编码的长度达到最短。具体做法是: (1)设需要编码的字符集合为{d1,d2,…,dn},它们在电文中出现的频率分别是{w1,w2,…,wn} (2)以{d1,d2,…,dn}为叶子结点,以{w1,w2,…,wn}分别作为前者的权值构造一颗哈夫曼树。 (3)构造成功之后,假定任意一个结点的左分支代表0,右分支代表1,则从根结点到每个叶子结点所经过的路径分支序列就是该结点对应的前缀编码,也称为哈夫曼编码。 5.6.3哈弗曼编码 例5:试为权为{5,2,10,6,7}的五个结点设计哈夫曼编码。 由上一个例子得到的哈夫曼树做分支标记后如下图所示: 所以哈夫曼编码对应为从根到相应叶子结点的所有 标记值: 5:000 2:001 10:01 6:10 7:11 本章实战练习 模拟资源管理器 模拟资源管理器是树的经典应用。编写一个资源管理器模拟程序,管理目录和文件的层次化存储结构,主要包括以下功能: 根据输入的目录名和文件名建立目录树 显示目录树 显示指定文件或目录所在的全路径 插入目录或文件 删除目录或文件 销毁目录树 实现要求: 1.采用树的孩子兄弟链表存储结构 2.实现两种创建方式:一是输入边创建树、二是根据树对应的二叉树的先序遍历字符串创建树。 第五章 树 数据结构 5.1 树的定义 树是树形结构的简称,是指n个结点的有穷集合D(n0),并且在D中的各结点同时满足数据关系R。 数据对象 D: D是具有相同特性的数据元素的集合。 数据关系 R:若D为空集,则称为空树;当树不为空时,有且仅有一个特定的称为根的结点(root),当n1时,其余结点可分为m (m0)个互不相交的有限集T1, T2, …, Tm, 其中每一个子集本身又是一棵符合本定义的树,称为根root的子树。 基本术语 结点:树的结点包含一个数据元素及若干指向其子树的分支。 结点的度:一个结点含有的子树的个数称为该结点的度 叶结点或终端结点:度为0的结点称为叶结点或终端结点 分支结点或非终端结点:度不为0的结点 树的度:一棵树中,各结点度的最大值 孩子结点或子结点:一个结点含有的子树的根结点称为该结点的孩子结点或子结点 双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的双亲结点或父结点 兄

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档