电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《二叉树及其应用》ppt课件

58页
  • 卖家[上传人]:tian****1990
  • 文档编号:76119291
  • 上传时间:2019-02-03
  • 文档格式:PPT
  • 文档大小:1.30MB
  • / 58 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、二叉树及其应用,雅礼 朱全民,二叉树,二叉树是一种特殊的树型结构,它的特点是每个节点至多只有两个子节点。 二叉树每个节点的子树有左右之分,其次序不能任意颠倒。 二叉树也有特殊形式,例如满二叉树、完全二叉树等。 例如右图就是一棵二叉树,并且是一棵完全二叉树。,二叉树的存储结构,常用的存储结构 type bitree=node node=record data :datatype; lchild,rchild:bitree; end;,二叉树的遍历,遍历( 先序遍历, 中序遍历, 后序遍历) Proc preorder(bt:bitree); if btNil then visit(bt) preorder(bt.lchild); preorder(bt.rchild); endP,二叉树的性质,在二叉树的第i层上最多有2i-1个结点 深度为K的二叉树最多有2k-1个结点 在二叉树中,叶子结点的总数总比为度数为2的结点多1 有n个结点的完全二叉树的结点按层序编号,则对任意一结点i,有 (1)如果i=1,则结点i是二查树的根,无双亲;如果i1,则双亲是i/2 (2)如果2in,则结点i无左孩

      2、子,否则左孩子为2i (3)如果2i+1n,则结点i无右孩子,否则右孩子为2i+1,树、森林转化为二叉树,用“孩子兄弟表示法”可以将任意一棵树转化为二叉树的形式 森林转化为二叉树 如果F=T1, T2, ,Tm是森林,则可按如下规则转化为一棵二叉树。 1)若F为空,即m=0,则B为空树 2)若F非空,即m0,则B的根root即为森林中第一棵树的根root(T1),B的左子树为从T1中子树森林F1=T11, T12, ,T1i转换而成的二叉树;其右子树Rb 是从森林F=T2, ,Tm中转换出来的二叉树,树的儿子兄弟表示法,在一棵树中,拥有同一个父结点的结点互称为兄弟。我们不妨假设树中每个结点的子结点是有序的(就像二叉树一样),则我们可以将一棵树这样转化成二叉树: 二叉树中每个结点对应原树的每个结点 对于二叉树中的某个结点 它的左子结点对应原树中该结点的第一个子结点; 它的右子结点对应原树中该结点的下一个兄弟。,转化后的树,树的儿子兄弟表示法,这样我们可以类似于二叉树的链式结构写出树的儿子兄弟表示法的存储结构: TYPE tree = node; node = record data :

      3、datatype; parent, child, brother : tree; / 分别记录父亲、第一个儿子、下一个兄弟 end;,树的儿子兄弟表示法,给定m个实数w1, w2, wm,(m=2) ,要求一个具有m个外部节点的扩充二叉树,每个外部ki节点有一个wi与之对应,作为它的权,使得带权外部路径长度 最小,其中li是从根到外部节点的路径长度。,最优二叉树(哈夫曼树),算法,1.构造m个只有1个节点的树 2.找两个最小的权 3.以这两个节点为左右儿子构造一个二叉树,并将该数的根节点权之为左右儿子权值之和 4.继续第二步,直到剩下一棵树为止,讨论,最优k叉树就是指在一个节点最多可以有k个叶子节点的时候,假设有n(n=k)个权值w1,w2,.wn,试构造出一棵有个叶子节点的k叉树。每个叶子节点有一个不同的权值i。其中树的带权路径长度最小的那棵树叫做最优k叉树。 怎么构造?,分析,最优k叉树必须具备的性质: 每个节点如果不是叶子节点,那么一定有k个儿子节点。 权值大的节点不能在比权值小的节点下方。就是权值大的节点到树根的长度要小于等于权值小的节点到树根的长度。,算法,根据给定的n个权值

      4、w1,w2,wn构成n棵k叉树的森林F=T1,T2,Tn,其中每棵k叉树Ti中都只有一个权值为wi的根结点,其左右子树均空。 在森林F中选出k棵根结点权值最小的树(当这样的树不止k棵树时,可以从中任选k棵),将这k棵树合并成一棵新树,为了保证新树仍是k叉树,需要增加一个新结点作为新树的根,并将所选的k棵树的根分别作为新根的左右孩子,将这k个孩子的权值之和作为新树根的权值。 对新的森林F重复(2),直到森林F中只剩下一棵树为止。这棵树便是最优k叉树。,反例,假设k=3,当n=5时,这样做是对的。但是当n=4时,用刚才的方法得到的“最优3叉树”,但是,明显右图的那颗树会比左图的那颗树优。,分析原因,错误的原因:主要是左边的这棵树它并没有排满。可以把第3层的一个节点拉到第2层去,而这样做肯定会让WPL更小。 那么肯定要让第一次合并的时候,少合并几个点,后面的操作就和上面所说得算法一样。并且让最后一次合并能合并n棵树。从而让上面排满。 那么第一次要合并多少个点呢? 首先每次合并会让树的总数减少k-1棵,而最后还有n棵。那么完成了第一次合并后,剩下的树的个数正好模k-1后等于1。那么第一次合并的

      5、树的个数就应该是(n-2) mod (k-1) + 2。 而当k=2时,k-1=1,此时第一次合并的个数总是为2。,改进算法,根据给定的n个权值wl,w2,wn构成n棵k叉树的森林F=T1,T2,Tn。其中每棵k叉树Ti中都只有一个权值为wi的根结点,其左右子树均空。进行第一次合并操作选出最小的(n-2)mod(k-1)+2颗根节点权值最小的树进行合并成一棵新树,该树根的权值为选出来的树的权值之和。 在森林F中选出k棵根结点权值最小的树(当这样的树不止k棵树时,可以从中任选出k棵),将这k棵树合并成一棵新树,为了保证新树仍是k叉树,需要增加一个新结点作为新树的根,并将所选的k棵树的根分别作为新根的孩子,将这k个孩子的权值之和作为新树根的权值。 对新的森林F重复(2),直到森林F中只剩下一棵树为止。这棵树便是最优k叉树。,二叉堆,定义 堆是一棵完全二叉树,对于每一个非叶子结点,它的权值都不大于(或不小于)左右孩子的权值,我们称这样的堆为小根堆(或大根堆)。 描述如下: n个元素的序列k1,k2,kn,当且仅当满足 ki=k2i 并且 ki = k2i+1 二叉堆肯定是一颗完全二叉树,在堆

      6、中插入元素x,首先将元素x放到堆中的最后一个位置(即最底层最右边的位置),然后不断地把x往上调整,直到x调不动为止(即大于它现在的父亲,或者x处于根结点)。,定义一个堆: Var st:array1maxn of longint; /存储堆 n:longint; /堆中元素个数,插入 (实际上是不断向上调整的过程),PROC heapup (k:longint); 把第k个结点上调 begin while k1 do begin i:=k div 2; i是k的父亲 if stistk then begin swap(i,k); k:=i; 交换结点i和k end else exit; end; end;,在堆中删除任意一个元素,这里说指的删除任意一个元素,是指在当前堆中位置为w的元素。过程如下:首先把位置w的元素和最后一个位置的元素交换,然后删去最后一个位置,这样w上的元素就被删除了。接着把位置w上的新元素不断下调,直到满足堆的性质。,插入 (实际上是不断向上调整的过程),PROC heapdown(k:longint);把第k个结点往下调 begin while k+k=n do

      7、begin i:=min 2k,2k+1; 如果2k+1不存在直接返回k+k否则返回2个中间的值较小的元素 if stistk then begin swap(i,k); k:=i; end else exit end; end;,堆的构造就是不断插入到堆的过程,堆的插入.删除,PROC add(x:longint); 添加一个值为x的元素 begin inc(n); stn:=x; up(n) end; PROC add(x:longint); 添加一个值为x的元素 begin inc(n); stn:=x; up(n) end;,合并果子,在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所消耗体力之和。 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务

      8、是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。 例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。,【输入文件】 输入文件fruit.in包括两行, 第一行是一个整数n(1=n=10000),表示果子的种类数。第二行包含n个整数,用空格分隔,第i个ai(1=ai=20000)是第i个果子的数目。 【输出文件】 输出文件fruit.out包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于231。 【样例输入】 3 1 2 9 【样例输出】 15 【数据规模】 对于30%的数据,保证有n=1000; 对于50%的数据,保证有n=5000; 对于全部的数据,保证有n=10000。,合并果子,把合成堆后的每堆的果子仍然看成相对独立的,那么定义timesi等于第i堆果子被合并的次数,ai为第i堆数字权值。则 Totalcost= ,目标求得是 minTotalc

      9、ost。 建立一棵二叉树,每堆果子分别为该树的叶节点,一种二叉树形态对应一种合并方案(2堆果子合并则有共同父结点),所以该方案的Totalcost =depthi*vi ,i是叶节点。解法是每次取出最小的两个节点,并从节点集合中删除,然后合并这两点后再加入节点集合;重复,直到只剩一个节点;,由于每次要取出最小的两个节点。(一般做法是每更新一次集合,重新排序,时间是O(n2))。由于n=10000,不得不采用数据结构-堆进行优化。,任务,有n个任务,每个任务有一个截止完成的时间Ti和完成需要的时间Ci。现在你一个人希望从0时刻开始完成尽量多的任务。问最多能完成多少任务?,分析,首先不妨将任务按照截止时间排序。这时候我们可以采用贪心方法,尽量选截止时间比较晚,同时需要时间比较少的任务完成是最好的。于是得出一个结论: 假设最优方案的组成的任务集合是U。如果存在一个不属于U的任务j,对于某个属于的满足TjTi而且jCi。那么把从中删除,而把替换过来,肯定仍然满足题目要求,也是一组最优方案。,分析,考虑排序后前i个任务组成的最优方案集合是i。下面看第i+1个任务。如果第i+1个任务直接加入后,依然满足题目要求,那么前i+1个任务最后方案集合就是Ui+1=Ui+i+1。否则我们找到Ui中需要时间最长的任务K。如果CkCi+1那么根据定理1,将K,i+1替换后肯定更优。于是得到了一个算法的基本流程: 1.将任务按照Ti排序。 2.从小到大枚举i。维护当前最优方案的集合U。每次将当前的任务I加入U后。如果不满足条件了,那么删去U中耗时最长的任务。 3.输出最优方案即可。 因此我们需要使用一种数据结构,它能快速删除耗时最长的任务,同时快速的插入一个新元素。显然,使用大根堆即能满足题目要求。,二叉查找树,二叉查找树(Binary Search Tree) 可以被用来表示有序集合、建立索引或优先队列等。 最坏情况下,作用于二叉查找树上的基本操作的时间复杂度,可能达到O(n)。 某些二叉查找树的变形,基本操作在最坏情况下性能依然很好,如红黑树、AVL树等。,B

      《《二叉树及其应用》ppt课件》由会员tian****1990分享,可在线阅读,更多相关《《二叉树及其应用》ppt课件》请在金锄头文库上搜索。

      点击阅读更多内容
    TA的资源
  • 2018-2019学年八年级历史上册 第3单元 新民主主义革命的兴起 第12课 国民革命导学案北师大版

    2018-2019学年八年级历史上册 第3单元 新民主主义革命的兴起 第12课 国民革命导学案北师大版

  • 2018-2019学年八年级历史上册 第六单元 中华民族的抗日战争 第21课 敌后战场的抗战导学案(新人教版

    2018-2019学年八年级历史上册 第六单元 中华民族的抗日战争 第21课 敌后战场的抗战导学案(新人教版

  • 2018-2019学年八年级历史上册 第1单元 民族危机与晚晴时期的救亡运动 第1课 鸦片战争导学案2北师大版

    2018-2019学年八年级历史上册 第1单元 民族危机与晚晴时期的救亡运动 第1课 鸦片战争导学案2北师大版

  • 2018-2019学年八年级历史上册 第2单元 辛亥革命与中华民国的建立 第8课 辛亥革命导学案北师大版

    2018-2019学年八年级历史上册 第2单元 辛亥革命与中华民国的建立 第8课 辛亥革命导学案北师大版

  • 2018-2019学年八年级历史上册 第六单元 中华民族的抗日战争 第20课 正面战场的抗战导学案(新人教版

    2018-2019学年八年级历史上册 第六单元 中华民族的抗日战争 第20课 正面战场的抗战导学案(新人教版

  • 2018-2019学年八年级历史上册 第2单元 辛亥革命与民族觉醒 第10课 新文化运动导学案华东师大版

    2018-2019学年八年级历史上册 第2单元 辛亥革命与民族觉醒 第10课 新文化运动导学案华东师大版

  • 2018-2019学年八年级历史上册 第2单元 辛亥革命与民族觉醒 第8课 袁世凯称帝与军阀混战导学案2华东师大版

    2018-2019学年八年级历史上册 第2单元 辛亥革命与民族觉醒 第8课 袁世凯称帝与军阀混战导学案2华东师大版

  • 2018-2019学年八年级历史上册 第4单元 中华民族的抗日战争 第14课 民族危机的空前严重导学案华东师大版

    2018-2019学年八年级历史上册 第4单元 中华民族的抗日战争 第14课 民族危机的空前严重导学案华东师大版

  • 2018-2019学年八年级历史上册 第五单元 从国共合作到国共对峙 第17课 中国工农红军长征导学案(新人教版

    2018-2019学年八年级历史上册 第五单元 从国共合作到国共对峙 第17课 中国工农红军长征导学案(新人教版

  • 2018-2019学年八年级历史上册 第1单元 民族危机与晚晴时期的救亡运动 第5课 中日甲午战争导学案1北师大版

    2018-2019学年八年级历史上册 第1单元 民族危机与晚晴时期的救亡运动 第5课 中日甲午战争导学案1北师大版

  • 2018-2019学年八年级历史上册 第2单元 辛亥革命与民族觉醒 第8课 袁世凯称帝与军阀混战导学案1华东师大版

    2018-2019学年八年级历史上册 第2单元 辛亥革命与民族觉醒 第8课 袁世凯称帝与军阀混战导学案1华东师大版

  • 2018-2019学年八年级历史上册 第1单元 民族危机与晚晴时期的救亡运动 第5课 中日甲午战争导学案2北师大版

    2018-2019学年八年级历史上册 第1单元 民族危机与晚晴时期的救亡运动 第5课 中日甲午战争导学案2北师大版

  • 2018-2019学年八年级历史上册 第1单元 民族危机与晚晴时期的救亡运动 第1课 鸦片战争导学案1北师大版

    2018-2019学年八年级历史上册 第1单元 民族危机与晚晴时期的救亡运动 第1课 鸦片战争导学案1北师大版

  • 2018-2019学年八年级历史上册 第2单元 辛亥革命与中华民国的建立 第10课 新文化运动导学案北师大版

    2018-2019学年八年级历史上册 第2单元 辛亥革命与中华民国的建立 第10课 新文化运动导学案北师大版

  • 2018-2019学年八年级历史上册 第1单元 民族危机与晚晴时期的救亡运动导学案北师大版

    2018-2019学年八年级历史上册 第1单元 民族危机与晚晴时期的救亡运动导学案北师大版

  • 2018-2019学年八年级物理上册 第二章 第1节 声音的产生与传播导学案 (新版)新人教版

    2018-2019学年八年级物理上册 第二章 第1节 声音的产生与传播导学案 (新版)新人教版

  • 2018-2019学年八年级地理上册 第四章 第三节 工业的分布与发展(第1课时)学案(新版)新人教版

    2018-2019学年八年级地理上册 第四章 第三节 工业的分布与发展(第1课时)学案(新版)新人教版

  • 2018-2019学年八年级物理上册 第二章 第2节 声音的特性导学案 (新版)新人教版

    2018-2019学年八年级物理上册 第二章 第2节 声音的特性导学案 (新版)新人教版

  • 2018-2019学年八年级地理上册 3.3 中国的水资源教学案(新版)湘教版

    2018-2019学年八年级地理上册 3.3 中国的水资源教学案(新版)湘教版

  • 2018-2019学年八年级物理上册 第三章 第3节 汽化和液化(第1课时 汽化)导学案 (新版)新人教版

    2018-2019学年八年级物理上册 第三章 第3节 汽化和液化(第1课时 汽化)导学案 (新版)新人教版

  • 点击查看更多
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.