数据结构之B+树
title: 数据结构之B+树
date: 2018-11-04 20:39:00
tags: 数据结构与算法之美
一、 浅谈B-树索引
1.B-树的特性
一棵m阶B-树,或者是空树,或者是满足以下性质的m叉树
根结点至少有两个分支;
除根以外的非叶结点,每个结点包含分支数范围[[m/2],m],即关键字字数的范围是[[m/2]-1,m-1],其中[m/2]表示取大于等于m/2的最小整数
所有叶子结点都在树的同一层上,并且指针域为空;
所有的非终端结点应包含如下信息: (n,A0,K1,A1,K2,A2,… ,Kn,An),结点内关键字互不相等,且从小到大排列。
解释:
m阶的意思是这颗树最多的分支是多少,每个节点可以包含很多关键字,范围是[[m/2]-1,m-1],比如m为 3,就说明是3阶的B-树,
那么它的树的节点的关键字最少2,最多4个。下面的B+树也是同样的理解。
2.B-树索引结构图
3.B-树查找代价分析
设关键字的总数为 N ,求 m阶 B- 树的最大层次 L。
二、 B+树的索引结构
1.B+树特性
在实际的文件系统中,基本上不使用B_树,而是使用B_树的一种变体,称为m阶B+树。 它与B-树的主要不同是叶子结点中存储记录。在B+树中,所有的非叶子结点可以看成是索引,而其中的关键字是作为“分界关键
字”,用来界定某一关键字的记录所在的子树。一棵m阶B+树与m阶B-树的主要差异是:
1.若一个结点有n棵子树,则必含有n个关键字;
2.所有叶子结点中包含了全部记录的关键字信息以及这些关键字记录的指针,而且叶子结点按关键字的大小从小到大顺序链接;
3.所有的非叶子结点可以看成是索引的部分,结点中只含有其子树的根结点中的最大(或最小)关键字。