B-树与B+树

概念

B-树,也称B树,是一颗多路平衡查找树。当描述一个B树时,需要指定它的阶数m,m代表数中孩子节点最多的节点的孩子个数。当m为2时,B-树就是二叉搜索树。

定义:

  1)根节点至少有一个关键字;

  2)非根节点至少有m/2-1个关键字;

  3)每个节点至多有m-1个关键字;

  4)所有叶子节点都位于同一层;

  5)每个节点的关键字按顺序排列,每个关键字左子树的关键字都比该关键字小,右子树都比该关键字大。

如图为一颗4阶B树。B树中每个节点存储了关键字(key)与对应的数值(value)。在数据库中我们将B树(和B+树)作为索引结构,

可以加快查询速速,此时B树中的key就表示键,而value表示了这个键对应的条目在硬盘上的逻辑地址。

B+树

定义:

  1) B+树包含两种类型的节点:内部节点和叶子节点,根节点既可以是内部节点也可以是叶子节点,根节点最少包含一个关键字;

  2)内部节点中关键字的个数比孩子节点数小1,内部节点最多包含m-1个关键字,其叶子节点也最多包含m-1个关键字;

  3)B+树内部节点不保存数据,数据都保存在叶子节点上;

  4)内部节点的关键字按从小到大的顺序进行排序,一个关键字的左子树的所有关键字都比该关键字小,右子树的所有关键字都比该关键字大;

  5)叶子节点都存有相邻节点的指针,叶子节点顺序连接。

B+树与B-树的异同点:

区别有以下两点:

  1)B+树的非叶子节点不存储数据,而B-树非叶子存储数据,B+树的叶子节点中存储数据;

  2)B+树的所有叶子节点通过指针连接到一起;

B+树优点:

  1)叶子节点通过指针连接,便于范围扫描,而B-树在进行范围扫描时则需要在内部节点与叶子节点之间来回移动;

   2)B+树每次扫描都会从根节点开始到叶子节点结束,因此更为稳定。

B-树优点:

  对于内部节点的数据可以直接得到,而通过访问叶子几点。

 B-树节点插入步骤:

  1)首先按关键字查找到要插入关键字的节点。

  2)在该节点插入关键字,并进行排序,判断该节点关键字的个数是否大于m-1,若大于则从中间关键字进行分裂,将中间位置的关键字插入到父节点中,父节点的新指针指向新分裂的节点,否则直接插入。

猜你喜欢

转载自www.cnblogs.com/menbo/p/11028214.html