- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
树与二叉树B要点解析
* 第6章 树和二叉树( Tree Binary Tree ) 6.1 树的基本概念 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.5 赫夫曼树及其应用 (本章及本课程的重点) 上机内容: Huffman 编/译码器的设计与实现 (实验要求参见严题集P149 ) * 6.2 二叉树 为何要重点研究每结点最多只有两个 “叉” 的树? 二叉树的结构最简单,规律性最强; 可以证明,所有树都能转为唯一对应的二叉树,不失一般性。 1. 二叉树的定义 2. 二叉树的性质 3. 二叉树的存储结构 (二叉树的运算见下一节) * 2. 二叉树的性质 (3+2) 性质1: 在二叉树的第i层上至多有2i-1个结点(i0)。 性质2: 深度为k的二叉树至多有2k-1个结点(k0)。 性质3: 对于任何一棵二叉树,若2度的结点数有n2个,则叶子数(n0)必定为n2+1 (即n0=n2+1) 课堂练习: 1. 树T中各结点的度的最大值称为树T的 。 A) 高度 B) 层次 C) 深度 D) 度 2.深度为k的二叉树的结点总数,最多为 个。 A)2k-1 B) log2k C) 2k-1 D)2k 3. 深度为9的二叉树中至少有 个结点。 A)29 B)28 C)9 D)29-1 √ √ √ * 对于两种特殊形式的二叉树(满二叉树和完全二叉树),还特别具备以下2个性质: 性质4: 具有n个结点的完全二叉树的深度必为?log2n?+1 性质5: 对完全二叉树,若从上至下、从左至右编号,则编号为i 的结点,其左孩子编号必为2i,其右孩子编号为2i+1;其双亲的编号必为i/2(i=1 时为根,除外)。 证明:根据性质2,深度为k的二叉树最多只有2k-1个结点,且完全二叉树的定义是与同深度的满二叉树前面编号相同,即它的总结点数n位于k层和k-1层满二叉树容量之间,即 2k-1-1n≤2k-1 或2k-1≤n2k 三边同时取对数,于是有:k-1≤log2nk 因为k是整数,所以k= ?log2n? +1 可根据归纳法证明。 * 课堂讨论: Q1:满二叉树和完全二叉树有什么区别? A1:满二叉树是叶子一个也不少的树,而完全二叉树虽然前n-1层是满的,但最底层却允许在右边缺少连续若干个结点。 满二叉树是完全二叉树的一个特例。 Q3: 设一棵完全二叉树具有1000个结点,则它有 个叶子结点,有 个度为2的结点,有 个结点只有非空左子树,有 个结点只有非空右子树。 489 488 1 0 Q2:为什么要研究满二叉树和完全二叉树这两种特殊形式? A1:因为只有这两种形式可以实现顺序存储! 由于最后一层叶子数为489个,是奇数,说明有1个结点只有非空左子树;而完全二叉树中不可能出现非空右子树(0个)。 A3:易求出总层数和末层叶子数。总层数k=?log2n?+1 =10; 且前9层总结点数为29-1=511 (完全二叉树的前k-1层肯定是满的) 所以末层叶子数为1000-511=489个。 * 请注意叶子结点总数≠末层叶子数! 还应当加上第k-1层(靠右边)的0度结点个数。 分析:末层的489个叶子只占据了上层的245个结点(?489/2? ) 上层(k=9)右边的0度结点数还有29-1-245=11个! 另一法:可先求2度结点数,再由此得到叶子总数。 首先,k-2层的28-1(255)个结点肯定都是2度的(完全二叉) 另外,末层叶子(刚才已求出为489)所对应的双亲也是度=2, (共有?489/2?=244个)。 所以,全部2度结点数为255(k-2层)+244(k-1层)=499个; 总叶子数=2度结点数+1=500个。 第i层上的满结点数为2i-1 所以, 全部叶子数=489(末层)+11(k-1层)=500个。 度为2的结点=叶子总数-1=499个。 * 4. 二叉树的存储结构 一、顺序存储结构 按二叉树的结点“自上而下、从左至右”编号,用一组连续的存储单元存储。 A B C D E F G H I [1] [2] [3] [4] [5] [6] [7] [8] [9] A B C G E I D H F 问:顺序存储后能否复原成唯一对应的二叉树形状? 答:若是完全/满二叉树则可以做到唯一复原。 而且有规律:下标值为i的双亲,其左孩子的下标值必为2i,其右孩子的下标值必为2i+1(即性质5) 例如,对应[2]的两个孩子必为[4]和[5],即B的左孩子必是D,右孩子必为E。 T[0]一般不用 * 讨论
文档评论(0)