自考软件基础.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 树与二叉树 ;树形结构是一种重要的非线性。 树结构在客观世界中广泛存在,如行政组织机构和人类社会的家谱及图书馆的藏书、工厂产品的结构以及操作系统中文件目录等。 本章重点讨论二叉树的存储结构及其基本的运算,并简单介绍树形结构的应用。 ;一、树的定义 树是n(n 0)个节点的集合,它满足下列两个条件: 1) 仅有一个特定的根节点。 2)其余节点可分为m(m:0)个互不相交的子集T1、T2…、Tn,每个子集都是一棵树,称为根的子树。 树的定义中用到了树的概念,是一个递归定义,显示了树的固有特性,即一棵树由若干棵子树构成,而子树又由下层的若干棵子树构成。 ;二、树常见的表示形式 如图10-1所示,本章主要采用的是自然表示法。 ;三、树的有关名词 (1)节点的度: 节点的孩子数称为节点的度。 (2)树的度(树的叉):树中最大的节点度为该树的度。 (3)叶子节点(终端节点):度为0的节点(1个孩子都没有)称为叶子节点。 (4)双亲节点:节点的父亲节点。 (5)树的高度(深度):树的层数(根为第1层)为树的高度。;一、定义 二叉树是一种重要的树形结构,它的特点是:二叉树可以为空(节点个数为0),任何一个节点的度都小于或等于2,并且,子树有左、右之分,其次序不能任意颠倒。 二叉树有5种基本形态,如图10-2所示。 ;第二节 二叉树;例10-1试写出具有3个节点的所有不同形态的树和二叉树。 ;三、二叉树的性质 二叉树具有以下重要的性质。 性质1:二叉树第i (i=1)层上最多有2i-1个节点。 性质2:深度为k的二叉树最多有2k-1个节点。 性质3:任意一棵二叉树中,若叶子节点个数为n0,度为2的节 点个数为n2,则n0=n2+1。;下面介绍两种特殊的二叉树。 (1) 满二叉树指深度为k,且有2k-1个节点的二叉树。或者说除叶子节点外,其它节点的度都为2的二叉树。 (2) 完全二叉树一个满二叉树的最下层从右向左连续缺少n (n=0)个节点的二叉树。 图10-3为满二叉树和完全二叉树示例。;可以看出: 1) 满二叉树一定是完全二叉树.它是完全二叉树的特例。 2)完全二叉树不一定是满二叉树。 3)满二叉树中n1=0;完全二叉树中n1= 0或1。 性质4:具有n个节点的完全二叉树的深度为└log2n┘+1 (符号└ x ┘表示取x的整数部分) ; 四、二叉树的存储结构 二叉树的存储结构有顺序存储和链式存储两种。 1、顺序存储结构 (1)方法 1)先将二叉树变成完全二叉树。(给有关节点补够两个孩子,所补节点为虚拟节点,仅占个空间)。 2)将这个完全二叉树中各节点从上到下,逐层从左向右依次存放到计算机连续空间中去。;例10-2 写出图10-4a所示二叉树的顺序存储结构,并说明最少需要多少个存储空间。 ;说明: ①上述完全二叉树,按编号依次存储在一维数组s[0.. n]中,其中s[l..n]用来存放各节点。为符合人们的计数习惯,s[0]可以不用,或者用来存放二叉树节点个数。 ②计算二叉树节点顺序存储最少需要多少个空间,不含s[0],本题最少需13个存储空间。 ③图10-4b中的口代表空节点(虚拟节点),仅占个位置。;例10-3一个深度为K且只有K个节点的二叉树顺序存储最多需要多少个存储空间,最少需要多少个。 解:为解题方便,假设K=4。 1)最坏情况的树形为右单支树,可看出要变成一个完全二叉树必须为满二叉树,如图10-5所示。最多需2k一1个存储空间。 2)最好情况的树形为左单支树变成完全二叉树,如图10-6所示。其节点个数为深度为K一1的满二叉树节点个数加1,所以,最少需2k-1个存储空间。 ;由以上分析可以看出,完全二叉树和满二叉树顺序存储是不浪费空间的。 ; (2)完全二叉树节点顺序编号的意义 1) 编号方法如图10-7 所示。 2)编号的意义:在顺序存储下根据一个节点的位置可以很方便地求出它 的双亲及孩子的地址。 假设节点编号为i,则有: ① 第i号节点的地址=第一个节点地址+(i-1)*d(d为节点所占字节数)。 ②i=1时为根节点,无双亲节点。 ③i>1时,该节点的双亲节点编号为└i/2 ┘。 如编号为8和9的节点,其双亲编号为4。 ④若2i= n,则第i号节点的左孩子编号为2i; 否则无左孩子。;⑤若2i+1=n,则第i号节点的右孩子编号

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档