B-树

定义

m阶B-树:是满足下列特性的树:
(1) 树中每个结点至多有m棵子树;
(2) 若根结点不是终端结点,则至少有两棵子树;
(3) 除根结点外,其他非终端结点至少有【m/2】(向上取整) 棵子树;
(4)所有非终端结点都包含以下数据:
(n,A0,K1,A1,K2,…,Kn,An)
其中,n(【m/2】(向上取整)-1≤n≤m -1)为关键码的个数;
Ki(1≤i≤n)为关键码,且Ki<Ki+1(1≤i≤n-1);
Ai(0≤i≤n)为指向子树根结点的指针,且指针Ai所指子树中所有结点的关键码均小于Ki+1大于Ki。
(5)所有叶子结点都在同一层上,B树是高平衡的。

插入基本原理:

当一个节点中插入新的数据时,
会造成节点中数据个数大于(m-1),
此时需要分裂节点,
将节点中第[m/2]+1个数据插入到当前节点的前驱中,
当前节点分裂为两个节点。

删除

当最下层结点中的关键字数大于m/2 -1 时,可直接删除。
当最下层待删关键字所在结点中关键字数目为最低要求m/2 -1时,如果其左(右)兄弟中关键字数目大于m/2 -1,则可采用“父子换位法”。
当最下层待删结点及其左右兄弟中的关键字数目均为最低要求数目m/2 -1时,需要进行合并处理,合并过程与插入时的分裂过程“互逆”,合并一次, 分支数少一,可能出现 “连锁合并”, 当合并到根时, 各分支深度同时减1。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45654306/article/details/103630908
今日推荐