B树初识

《算法导论-高级数据结构》读书笔记,原本想了解一下数据库索引的组织形式。

文字是很抽象的,我想做个图直观的表示B树的性质,这篇短文只是描述B树是
什么,而不谈B树的操作,有待后续。

《B树初识》

类似二叉搜索树,你所看到的每个矩形是一个节点,矩形中的白色正方形为
一个关键字。关键字为分隔点,将其子代的节点的关键字范围划分为大于于当前关键字小于等于下一个关键字。

其中 c i c_i ci指向其子节点的引用类型。笔者将父代与子代的连线放在子代头部,
这也体现引用的特点,其存放的就是节点首地址。

B树之所以称为B树是因为它有特点。
B树可以用如下伪码表示:

/**
从上图中可以看出,每个节点有n个关键字,n+1个孩子。
而最小度数规定每个节点的关键字[t,2t-1]个,当然根节点除外,
不过其关键字有上界,就是小于等于2t-1
**/
public class BNode{
      int  n;  //本节点中的关键字个数
      Key[] ascent;//升序存放的关键字
      boolean leaf;   //表示本节点是否为叶子
      int  t;  //B树中的最小度数,每个节点的关键字范围控制在[t,2t-1]    
      /**B树 的关键字范围有限制,假如某节点为其父节点的第i个孩子,则其存储的
  关键字范围为key[i]<=value<=key[i+1]
      **/
      BNode[] children; //存放指向其n+1个孩子的引用类型。
}

针对B树的几个结论:

  • B树叶子节点深度相同。
  • B树的深度的上界为 l o g t n + 1 2 log_t \frac{n+1}{2} logt2n+1
  • B树的因为分支较多,又以类似二叉搜索树的规则组织,其查找所经过 的节点很少,对于每个节点都需要存储访问的环境来说,B树可以极少
    降低存储访问次数。
    原文作者:B树
    原文地址: https://blog.csdn.net/qq_33745102/article/details/82808810
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞