数据结构C语言版吴子东第5章树课件教学.pptVIP

数据结构C语言版吴子东第5章树课件教学.ppt

  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文档。上传文档
查看更多
数据结构C语言版吴子东第5章树课件教学.ppt

5.1 树的基本概念 5.1.1 树的定义和表示方法 5.1.2 树的基本术语 5.1.3 树的性质 5.1.1 树的定义和表示方法 树具有以下两个特点:①树的根结点没有前驱结点,除根结点之外的所有结点有且只有一个前驱结点。② 树中所有结点可以有零个或多个后继结点。 2.树的表示方法 ⑵ 二元组表示法 Tree=(D,R)其中D为树中结点的集合,R为树中结点之间关系的集合。上图的树用二元组表示为: ⑶ 集合表示法(文氏图表示法) 用集合的形式表示树,就是将根结点视为一个大的集合,其若干棵子树构成这个大集合中若干个互不相交的子集,如此嵌套下去,即构成一棵树的嵌套集合表示。用集合表示法表示前面的树。 5.1.2 树的基本术语 1.树的结点 包含一个数据元素及若干个指向其子树的分支。 2.根结点、父结点、子结点和兄弟结点 树中一个结点若无前驱结点,则称为根结点;某结点的直接前驱结点,则称为该结点的父结点(双亲结点);而该结点(父结点的后继结点)就称子结点;具有同一个双亲的孩子结点互称为兄弟结点。 3.结点的度和树的度 结点所拥有的子树的个数称为该结点的度。树中各结点度的最大值称为该树的度。 4.结点的层数和树的层数 结点的层数从根结点开始定义,规定树的根结点的层数为第一层,根的孩子为第二层,以次类推,各结点的层数等于它的双亲结点的层数加1。树中所有结点的最大层数称为树的层数(或称树的深度)。 5.叶子结点 度为0的结点称为叶子结点,或者称为终端结点。   6.分支结点 度不为0的结点称为分支结点,或者称为非终端结点。一棵树的结点除叶结点外,其余的都是分支结点。 7.有序树和无序树。如果一棵树中结点的各子树从左到右是有次序的,即若交换了某结点各子树的相对位置,则构成不同的树,称这棵树为有序树;反之,则称为无序树。 8.森林 是m(m≥0)棵互不相交树的集合称为森林。自然界中树和森林是不同的概念,但在数据结构中,树和森林只有很小的差别。任何一棵树,删去根结点就变成了森林。 5.1.3 树的性质 性质1 树中的结点数等于所有结点的度数加1。 性质2 度为k的树中第i层上至多有ki-1个结点(i≥1)。 证明:(下面用数学归纳法证明)对于第一层显然是成立的,因为树中的第一层上只有一个结点,而用i=1代入ki-1计算,也同样得到只有一个结点,即ki-1 =k1-1=k0=1;假设对于第i-1层(i1)命题成立,即度为k的树中第i-1层上至多有k(i-1)-1=ki-2 个结点,则根据树的度的定义,度为k的树中每个结点至多有k个孩子,所以第i层上的结点数至多为第i-1层上结点数的k倍,即至多为ki-2 *k=ki-1个,这与命题相同,故命题成立。 性质3 深度为h的k叉树至多有(kh-1)/(k-1)个结点。 证明:当深度为h的k叉树(即度为k的树)上每一层都达到最多结点数时,所有结点的总和才能最大,即整个k叉树具有最多结点数。 性质4 具有n个结点的k叉树的最小深度为 证明:具有n个结点的k叉树的最小深度为h,若在该树中前h-1层都是满的,即每一层的结点数都等于ki-1个(1≤i≤h-1),第h层(即最后一层)的结点数可能满,也可能不满,则该树具有最小的深度。根据性质3,其深度h的计算公式为: 5.1.4 树的基本操作 1. Initiate(t) 初始化一棵空树t。 2. root(x) 求结点x所在树的根结点。 3. parent(t,x) 求树t中结点x的双亲结点。 4. child(t,x,i) 求树t中结点x的第i个孩子结点。 5. rightsibling(t,x) 求树t中结点x的第一个右边兄弟结点。 6. Insert(t,x,i,s) 把以s为根结点的树插入到树t中作为结点x的第i棵子树。 7. delete(t,x,i) 在树t中删除结点x的第i棵子树。 8. tranverse(t) 是树的遍历操作,即按某种方式访问树t中的每个结点,且使每个结点只被访问一次。 9. clear(t) 清除操作,将树t置为空树。 5.1.5 树的存储结构 1.双亲表示法 2.孩子表示法 ⑴ 多重链表法 树中结点的存储表示可描述为: #define MAX 树的度数 typedef struct treenode { elemtype data; struct treenode *son[MAX]; }nodetype; ⑵ 孩子链表表示法 #define MAX 树中结点的最多个数 typedef struct ch

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档