- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最新第1章数据结构与算法41534153.ppt
以上证明得到(2)和(3)成立。 下面利用上面的结论证明(1)。 对于任意一个结点i,若2i≤n,则左孩子的编号为2i,反过来结点2i的双亲就是i,而 ?2i/2?=i;若2i+1≤n,则右孩子的编号为2i+1,反过来结点2i+1的双亲就是i,而 ?(2i+1)/2? =i,由此可以得出(1)成立。 二叉树的基本性质: (1)在二叉树的第k层上,最多有2k-1(k≥1)个结点; (2)深度为m的二叉树最多有2m-1个结点; (3)度为0的结点(即叶子结点)总是比度为2的结点多一个; (4)具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分; (5)具有n个结点的完全二叉树的深度为[log2n]+1; 满二叉树是指除最后一层外,每一层上的所有结点有两个子结点,则k层上有2k-1个结点深度为m的满二叉树有2m-1个结点。 完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。 (6)设完全二叉树共有n个结点。如果从根结点开始,按层序(每一层从左到右)用自然数1,2,….n给结点进行编号(k=1,2….n),有以下结论: ①若k=1,则该结点为根结点,它没有父结点;若k1,则该结点的父结点编号为INT(k/2); ②若2k≤n,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点(也无右子结点); ③若2k+1≤n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。 1.6.3二叉树的存储结构 二叉树也可以采用两种存储方式:顺序存储结构和链式存储结构。 1. 顺序存储结构 这种存储结构适用于完全二叉树。其存储形式为:用一组连续的存储单元依次自上而下、自左至右存储完全二叉树的结点元素,即 :按照完全二叉树的每个结点编号的顺序存放结点内容。下面是一棵二叉树及其相应的存储结构。 a b c d e f g h i j k l 完全二叉树 A B C D E F G H I J K L 1 2 3 4 5 6 7 8 9 10 11 12 8 4 5 6 7 2 3 1 最坏情况下,一个深度为k且只有k个结点的单支树,需要长度为2k-1的一维数组。 7 8 9 4 5 6 2 3 1 1 2 3 4 5 6 0 0 0 7 8 0 9 0表示此结点不存在。 2、链式存储结构 在顺序存储结构中,利用编号表示元素的位置及元素之间孩子或双亲的关系,因此对于非完全二叉树,需要将空缺的位置用特定的符号填补,若空缺结点较多,势必造成空间利用率的下降。在这种情况下,就应该考虑使用链式存储结构。 常见的二叉树结点结构如下所示: Lchild item Rchild G H D E F B C A ^ G ^ ^ H ^ ^ D ^ E ^ F ^ B ^ C A BT 这种存储结构的特点是寻找孩子结点容易,双亲比较困难。因此,若需要频繁地寻找双亲,可以给每个结点添加一个指向双亲结点的指针域,其结点结构如下所示。 Lchild item Rchild Parent 1.6.4二叉的遍历 二叉树是一种非线性的数据结构,在对它进行操作时,总是需要逐一对每个数据元素实施操作,这样就存在一个操作顺序问题,由此提出了二叉树的遍历操作。所谓遍历二叉树就是按某种顺序访问二叉树中的每个结点一次且仅一次的过程。这里的访问可以是输出、比较、更新、查看元素内容等等各种操作。 二叉树的遍历方式分为两大类:一类按根、左子树和右子树三个部分进行访问;另一类按层次访问。下面我们将分别进行讨论。 1. 按根、左
文档评论(0)