您的位置:首页 > 其它

B树和B+树

2016-03-30 15:18 204 查看
B树,又称B-树,它是一种平衡的多叉树。

一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。

它或者是空树,或者是满足下列性质的树:

1、根结点至少有两个子女;

2、每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1;

3、除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数 k 满足:┌m/2┐ <= k <= m ;

4、所有的叶子结点都位于同一层。

在B-树中,每个结点中关键字从小到大排列,并且当该结点的孩子是非叶子结点时,该k-1个关键字正好是k个孩子包含的关键字的值域的分划。

因为叶子结点不包含关键字,所以可以把叶子结点看成在树里实际上并不存在外部结点,指向这些外部结点的指针为空,叶子结点的数目正好等于树中所包含的关键字总个数加1。

B-树中的一个包含n个关键字,n+1个指针的结点的一般形式为: (n,P0,K1,P1,K2,P2,…,Kn,Pn)

其中,Ki为关键字,K1<K2<…<Kn, Pi 是指向包括Ki到Ki+1之间的关键字的子树的指针。

m阶的B树和m阶的B+树的区别

1)B+树上所有的有效数据全在叶子节点上,而B树所有节点分散在树中,B-树中的关键字不重复。

2)B+树中有几个关键字就有几个子树,而B树中具有n个关键字的节点含有n+1棵子树。

3)B+树有两个指针,根指针和指向最小节点的指针,叶子节点连接成一个不定长的线型链表。

4)B+树中,每个节点(除根节点外的非叶子节点)中的关键字个数取值范围⎡m/2⎤<= n <=m,根节点n的取值范围是2<=n<=m。B树中,每个节点(除根节点外的非叶子节点)中的关键字的取值范围⎡m/2⎤-1<= n <=m-1。

5)B+树中的所有非叶子节点仅仅起到索引作用,节点中的每个索引项只包含对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。而在B树中,每个关键字对应记录的存储地址。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: