树和二叉树的物理实现.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
左子结点/右兄弟结点表示法(2) * 内容 树的定义与术语 父指针表示法 树的实现 子结点表表示法 左子结点/右兄弟结点表示法 动态结点表示法 动态左子结点/右兄弟结点表示法 K叉树 树的顺序表示法 * Linked Implementations (1) * Linked Implementations (2) * 树替换为二叉树 左子结点/右兄弟结点表示法本质上使用二叉树来替换树. 使用这种方法可以把任意树替换为二叉树. 森林是一个或多个树的集合. * 内容 树的定义与术语 父指针表示法 树的实现 K叉树 树的顺序表示法 * 树的顺序表示法 (1) 按照先根周游的顺序访问结点的值. 节省空间,但是只允许顺序查找. 必须保留重建树结构的信息. 例子: 对于二叉树, 使用一个符号来标记null 指针. AB/D//CEG///FH//I// A B D C E G F H I * 树的顺序表示法(2) 例子: 对于满二叉树, 标记叶结点或分支结点. A’B’/DC’E’G/F’HI 例子: 对于树, 标记每个子树的结束. RAC)D)E))BF))) A B D C E G F H I R A D B C F E * 要点回顾 父指针表示法 树的实现 K叉树 树的顺序表示法 * 二叉树的(物理)存储结构 * 内容 二叉树的实现 使用数组实现二叉树 使用指针实现二叉树 * 对于满二叉树和完全二叉树,显然可以将二叉树的数据元素映射到一组连续的存贮单元,反之可以按向量的下标值确定相应数据元素在二叉树中的结点位置。 B D E A C F G H I A B C D E F G H I 1 2 3 4 5 6 7 8 9 完全二叉树 二叉树的数组实现 * 但对下列二叉树存于一向量中 B D E A C F G A B C D E F G 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 B C A D A B C 1 2 3 4 5 6 7 8 D * 显然要浪费大量的存贮单元,此外,若要在二叉树中插入或删除结点时,更为不便。因此,以顺序结构存贮一般的二叉树是不适宜的。通常情况下,采用多重链表结构(对于非满二叉树和非完全二叉树)来作为二叉树的存贮结构。 * 使用数组来实现完全二叉树 (1) Position 0 1 2 3 4 5 6 7 8 9 10 11 Parent -- 0 0 1 1 2 2 3 3 4 4 5 Left Child 1 3 5 7 9 11 -- -- -- -- -- -- Right Child 2 4 6 8 10 -- -- -- -- -- -- -- Left Sibling -- -- 1 -- 3 -- 5 -- 7 -- 9 -- Right Sibling -- 2 -- 4 -- 6 -- 8 -- 10 -- -- * Parent(r) = ?(r-1)/2? 当 0rn 时 Left child(r) = 2r+1 当 2r+1n 时 Right child(r) = 2r+2 当 2r+2n 时 Left sibling(r) = r-1 当r为偶数且 0rn 时 Right sibling(r) = r+1 当r为奇数且 r+1n 时 使用数组来实现完全二叉树 (2) * 二叉树 二叉树的实现 使用数组实现二叉树 使用指针实现二叉树 * Binary Tree Implementation (1) * * 实现树的最简单方法就是对每个结点只保存一个指针域指向其父结点。 父指针表示法的说明【P128 图6.5】 很明显,这种实现并非出于一般性的目的,因为。。。【P126最后一段】 * 【P131 6.3的一段】 --- The next several slides show various possible implementations for general trees. 以下几个页讲述了几种树的表示法。 A key gauge for the quality of these representations is how well they perform the key tasks of left-child, right-sibling, and parent. This representation is poor for finding the right sibling of a node. 衡量这些表示法的好坏是看它们完成关键任务(左孩子,右兄弟,父结点)的性能。 * 子结点表示法:这是一种很简单的表示方法,其中每个分支结点均存储

文档评论(0)

zzqky + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档