- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构CC第五章树
第五章 树 第五章 树 知 识 点 二叉树及二叉树的存储结构 二叉树的遍历 树的基本概念 二叉排序树 哈夫曼树 难 点 二叉树遍历算法的设计 修改二叉树遍历算法,进行二叉树其它相关的操作,解决实际应用问题 要 求 熟练掌握以下内容: 理解树形结构的基本概念和术语 二叉树定义和存储结构 二叉树的遍历次序及二叉树遍历算法 了解以下内容: 树和二叉树之间的相互转换方法 线索二叉树的建立及遍历算法 树的应用:二叉排序树和哈夫曼树 第五章目录 5.1 树的定义和基本术语 5.2 二叉树 5.3 二叉树的遍历 5.4 线索二叉树 5.5 树的应用 5.6 应用实例及分析 小 结 习题与练习 5.1.1 树的定义 树是n个结点的有限集合T,在一棵非空树中(n0)有且仅有一个称作根的结点;其余结点可分为m个(m≥0)互不相交的集合T1,T2……Tm,其中,每一个集合本身又是一棵树,并称为根的子树。 当n=0时,称为空树。 有限集合T1,T2……Tm应该“互不相交”,即任意两个集合不能有相重的结点。 树的各个结点有不同层次关系,这种关系通常用图形表示,但与自然界的树木相反,习惯上将整棵树的根画在最上层,如图5.1所示。 图5.1 树的表示法 5.1.2 基本术语 1. 结点的度:树中每个结点具有的子树数或者后继结点数称为该结点的度(Degree)。度数为0的结点,即没有子树的结点叫作端结点或叶子结点。一棵树中各个结点度数的最大值叫做这个树的度。 2. 儿子结点和父亲结点:一个结点的子树的根或者后继结点称为该结点的儿子结点,反之,该结点则称为其后继结点的父亲结点。 3. 兄弟结点:同一个结点的儿子结点之间互称为兄弟结点。 4. 子孙结点和祖先结点:一个结点的子树中所有结点均称之为该结点的子孙结点。反之,从根结点到达一个结点的路径上的所有结点,都叫做该结点的祖先结点。 5. 树的深度:树是一种层次结构,树中结点的层次(Level)是从根结点算起的。根结点为第一层,其儿子结点为第二层。其余各结点的层数逐层由上而下计算。一棵树中结点的最大层数叫做此树的深度或高度。 6. 森林:n个树的集合叫森林(Forest)。 树形结构的逻辑特征 树形结构的逻辑特征可用树中结点之间的父子关系来描述: 树中任一结点都可以有零个或多个直接后继结点(即儿子结点),但至多只能有一个直接前趋结点(即父亲结点)。 树中只有根结点无前趋,它是开始结点; 叶结点无后继,它们是终端结点。 树形结构是非线性结构。 5.2.1 二叉树的定义及其性质 一个二叉树是n个结点的有限集合(n≥0),此集合或者是空集(n=0),或者是由一个根结点及两棵互不相交的、分别称为左子树和右子树的二叉树组成。 由上述定义可知,二叉树可以是空集,其根可以有空的左子树或右子树,或者左、右子树皆为空。 一般地,二叉树有五种基本形态,如图5.2所示。 图5.2 二叉树的基本形态 (a) 空二叉树 (b) 仅有一个根结点的二叉树 (c) 右子树为空的二叉树 (d)左子树为空的二叉树 (e)左、右子树均非空的二叉树 1. 满二叉树 在一个二叉树中,若第i层的结点数为2i-1,则称此层的结点数是满的,当树中的每一层都是满的,则称此二叉树为满二叉树。 即如果一个二叉树中,除最下一层的各结点度数为0以外,其它各层结点的度数均等于2,则此二叉树为满二叉树。 满二叉树的第一层有一个结点(即根结点),第二层有两个结点,依此类推。每一层的结点数都是上一层结点数的二倍。所以,在满二叉树的第i层共有2i-1个结点(i≥1),一个深度为h的满二叉树的结点总数为2h-1。 图5.3 满二叉树 2. 完全二叉树 如果一个二叉树各层都是“满”的,只是最下面一层从右边起连续缺n个结点,这种二叉树叫做完全二叉树。 例如图5.3中的满二叉树,如果缺少从第11号至第15号结点(没有图中虚框里的几个结点),就是一个完全二叉树。 对于完全二叉树,对其结点采用“按层编号”比较方便,即从根结点开始由上而下逐层给结点编号,同一层的结点由左向右编号。 对于完全二叉树中任一个编号为i的结点(1≤i≤n),它的父结点和左、右儿子结点的编号与i值有如下的关系: 1) 如果i=1,则它是整个树的根结点,无父结点;若i1,则其父结点编号为 。 2) 如果2i≤n,则其左儿子结点编号为2i;若2in,则无左儿子结点。 3) 如果(2i+1)≤n,则其右儿子结点编号为(2i+1);反之,则无右儿子结点。 5.2.2 二叉树的存储结构 1. 二叉树的顺序存储结构:用一个一维数组来存储二叉树的各个结点,显然,二叉树的结点必须按某种次序分别存入数组的各个单元,这种次序应能反映结点间的逻辑关系,否则二叉树上的各种基
文档评论(0)