数据结构课件C++版第七章树和二叉树幻灯片.ppt

数据结构课件C++版第七章树和二叉树幻灯片.ppt

  1. 1、本文档共156页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2、删除数据元素操作 第一步:删除数据结点12 38 72 66 59 16 24 12 6 5 4 3 2 1 0 80 7 12 24 16 59 66 72 38 80 heapArray 第二步:移动该结点为根结点的子堆中最后一个元素填删除位置 38 72 66 59 16 24 80 6 5 4 3 2 1 0 7 80 24 16 59 66 72 38 80 heapArray 删除数据元素 第三步: 计算左右孩子位置 并和左右孩子结点比较大小 38 72 66 59 16 24 80 6 5 4 3 2 1 0 7 80 24 16 59 66 72 38 heapArray 第四步: 和最小的孩子交换位置 并和左右孩子结点比较大小 16 24 80 59 66 72 38 38 72 66 59 80 24 16 6 5 4 3 2 1 0 7 heapArray 删除数据元素 第五步: 和最小的孩子交换位置 80结点无孩子,不用再移动,算法结束 16 24 38 59 66 72 80 80 72 66 59 38 24 16 6 5 4 3 2 1 0 7 heapArray 16 24 38 59 66 72 80 80 72 66 59 38 24 16 6 5 4 3 2 1 0 7 heapArray 最后结果:符合小顶堆定义 3、数组堆化操作 堆化:把一个有n个数据元素的数组构造成一个堆。 方法1:生成一个空堆,利用前面插入算法插入数组中每个元素,每插入一个元素使新数组仍然为堆 方法2:利用原有数组,移动数据元素达到目的 数组堆化-方法1 24 24 10 10 24 33 25 16 77 90 10 24 89 67 array 10 24 90 10 24 90 77 10 24 90 77 16 10 16 90 77 24 10 16 90 77 24 25 10 16 25 77 24 90 10 16 25 77 24 90 33 插入24 插入10 插入90 插入77 插入16 插入25 插入33 数组堆化-方法1 33 25 16 77 90 10 24 89 67 array 10 16 25 77 24 90 33 89 10 16 25 77 24 90 33 89 67 10 16 25 67 24 90 33 89 77 插入89 插入67 33 90 24 67 25 16 10 89 77 堆中数组: 数组堆化操作-方法2 1、调整最后一个叶子结点的双亲结点构成的子树为一个堆 (最后一个叶子结点的双亲结点为currentPos) 2、调整该结点前一个结点所形成的一个子树为一个堆(currentPos= currentPos-1) 3、直到根结点(下标为0) 24 10 90 77 16 25 33 89 67 数组堆化-方法2 24 10 90 77 16 25 33 89 67 24 10 90 67 16 25 33 89 77 24 10 90 67 16 25 33 89 77 24 10 25 67 16 90 33 89 77 第一步 第二步 24 10 25 67 16 90 33 89 77 数组堆化-方法2 第三步 24 10 25 67 16 90 33 89 77 第四步 10 16 25 67 24 90 33 89 77 哈夫曼树(Huffman)树是一类带权路径长度最短的树 一、Huffman树(最优二叉树) 1、概念 两结点间的路径:从一结点到另一结点所经过的结点序列 路径长度:路径上的分支树 树的路径长度:从根到每一结点的路径长度之和 2 7 6 3 4 1 5 例 ⑴-⑵-⑸为结点1到5之间的路径,其路径长度为2, 树的路径长度=l12 +l13+ l14 +l15+ l16 +l17 =1+1+2+2+2+2=10 7.8 哈夫曼树 考虑带权时:设树中有m个叶结点,每个叶结点带一个权值wi且根到叶结点i的路径长度为 Li (i=1,2,.. m),则树的带权路径长度为树中所有叶结点的权值与路径长度的乘积的总和。        M    即:WPL=∑ WkLk       K=1  7.8 哈夫曼树 例: 使WPL最小的二叉树成为最优二叉树(Huffman 树) 完全二叉树 d c a b 7 5 2 4 c d b a 2 4 7 5 WPLa=2*7+2*5+2*2+2*4 WPLb=7*3+5*3+2*1+4*2

文档评论(0)

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

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

1亿VIP精品文档

相关文档