B+树
1、what is B+ tree?
B+树是B树的的一种变形
性质:
(1)n棵子树的结点中含有n个关键字,每个关键字不保存数据,只用来索引,所有的数据都保存在叶子结点中;
(2)叶子结点中依关键字的大小顺序链接。
(3)所有非叶结点仅包含其子树中最大(或最小)关键字;
(4)在B+树中又两个头指针,一个指向根结点,一个指向关键字最小的叶子结点。
2、B+树查找
有两种:
(1)从最小关键字起顺序查找;
(2)从根结点起,进行顺序查找,即使在非叶子结点中找到了,并不终止,而是继续向下直到叶子结点
3、B+树插入
假设有m阶B+树,要插入关键字为a。
算法:
(1)如果当前结点是根结点并且插入后结点关键字数目小于等于m,则算法结束;
(2)如果当前结点是非根结点并且插入后结点关键字数目小于等于m,则判断若a是新索引值,则加入到双亲结点中,迭代,否则直接结束;
(3)如果插入后的关键字数目大于m,则结点先分裂成两个结点X和Y,并且各自所含关键字数目差不多,调整双亲结点的索引值,迭代;
4、B+ 树的删除
B+树的删除也仅在叶子结点进行,当叶子结点中的最大关键字被删除时,其在非终端结点中的值可以作为一个“分界关键字”存在。若因删除而使结点中关键字的个数少于m/2 (m/2结果取上界,如5/2结果为3)时,其和兄弟结点的合并过程亦和B-树类似。