B-tree教程解决方案.pptVIP

  • 4
  • 0
  • 约5.61千字
  • 约 43页
  • 2017-02-11 发布于湖北
  • 举报
删除55 结点合并 删除80 结点合并 非叶结点删除 删除50 删除55 结点合并与调整 删除70 删除75 B-树的关键码删除算法 AVL树是2路查找树。如果已知m路查找树的度 m和它的高度 h, 则树中的最大结点数为 等比级数前 h 项求和 每个结点中最多有 m-1 个关键码,在一棵高度为 h 的 m 路查找树中关键码的最大个数为 mh+1-1。 对于高度 h 2 的二叉树,关键码最大个数为7; 对于高度 h 3 的3路查找树,关键码最大个数为 34-1 80。 若树中关键码有 N 个, 则失败结点数为 N+1。这是因为失败一般发生在 Ki x Ki+1, 0?i?N,设K0 -?,KN+1 +?。因此,有 N +1 失败结点数 位于第 h+1 层的结点数 ? 2 ?m / 2? h-1 N ? 2 ?m / 2? h-1-1 反之,如果在一棵 m 阶B-树中有 N 个关键码,则所有的非失败结点所在层次都小于 h,则 h-1 ? log ?m / 2? N +1 / 2 示例:若B-树的阶数 m 199,关键码总数 N 1999999,则B-树的高度 h 不超过 log100 1000000 +1 4 提高查找树的路数 m,可以改善树的查找性能。对于给定的关键码数 n,如果查找树是平衡的,可以使 m 路查找树的性能接近最佳。下面我们将讨论一种称之为B-树的平衡的 m 路查找树。在B-树中我们引入“失败”结点。一个失败结点是当查找值x不在树中时才能到达的结点。 若B-树的阶数 m 3,高度 h 4,则关键码总数至少为 N 2 ?3 / 2? 4-1-1 15。 m值的选择 如果提高B-树的阶数 m,可以减少树的高度,从而减少读入结点的次数,因而可减少读磁盘的次数。 事实上,m 受到内存可使用空间的限制。当 m很大超出内存工作区容量时,结点不能一次读入到内存,增加了读盘次数,也增加了结点内查找的难度。 m值的选择:应使得在B-树中找到关键码 x 的时间总量达到最小。 这个时间由两部分组成: 从磁盘中读入结点所用时间 在结点中查找 x 所用时间 根据定义,B-树的每个结点的大小都是固定的,结点内有 m-1 个索引项 Ki, Di, Ai , 1 ? i m。其中,Ki 所占字节数为?,Di 和 Ai 所占字节数为?,则结点大小近似为 m ?+2? 个字节。读入一个结点所用时间为: tseek + tlatency + m ? + 2? ttran a + bm B+树 B+树可以看作是B-树的一种变形,在实现文件索引结构方面比B-树使用得更普遍。 一棵m阶B+树可以定义如下: 树中每个非叶结点最多有 m 棵子树; 根结点 非叶结点 至少有 2 棵子树。除根结点外,其它的非叶结点至少有 ?m/2? 棵子树;有 n 棵子树的非叶结点有 n-1 个关键码。 所有的叶结点都处于同一层次上,包含了全部关键码及指向相应数据对象存放地址的指针,且叶结点本身按关键码从小到大顺序链接; 每个叶结点中的子树棵数 n 可以多于 m,可以少于 m,视关键码字节数及对象地址指针字节数而定。 若设结点可容纳最大关键码数为 m1,则指向对象的地址指针也有 m1 个。 结点中的子树棵数 n 应满足 n ? [?m1/2?, m1]。 若根结点同时又是叶结点,则结点格式同叶结点。 所有的非叶结点可以看成是索引部分,结点中关键码 Ki 与指向子树的指针 Ai 构成对子树 即下一层索引块 的索引项 Ki, Ai ,Ki 是子树中最小的关键码。特别地,子树指针 A0 所指子树上所有关键码均小于 K1。结点格式同B-树。 B+树 叶结点中存放的是对实际数据对象的索引。 在B+树中有两个头指针:一个指向B+树的根结点,一个指向关键码最小的叶结点。可对B+树进行两种查找运算:一种是循叶结点链顺序查找,另一种是从根结点开始,进行自顶向下,直至叶结点的随机查找。 B+树 在B+树上进行随机查找、插入和删除的过程基本上与B-树类似。只是在查找过程中,如果非叶结点上的关键码等于给定值,查找并不停止,而是继续沿右指针向下,一直查到叶结点上的这个关键码。B+树的查找分析类似于B-树。 B+树的插入仅在叶结点上进行。每插入一个关键码-指针索引项后都要判断结点中的子树棵数是否超出范围。当插入后结点中的子树棵数 n m1 时,需要将叶结点分裂为两个结点,它们的关键码分别为 ? m1+1 /2? 和 ? m1+1 /2?。并且它们的双亲结点中应同时包含这两个结点的最小关键码和结点地址。此后,问题归于在非叶结点中的插入了。 B+树 在非叶结点中关键码的插入与叶结点的插入类似,但

文档评论(0)

1亿VIP精品文档

相关文档