电子商务网站建设特点,广州建设工程交易中心 吴林爽,网站开发综合实训报告,黄骅贴吧金宝B树的插入
原树#xff1a; 插入key后#xff0c;若导致原节点关键字数超过上限#xff0c;则从中间位置#xff08; ⌈ m 2 ⌉ \lceil\frac{m}{2}\rceil ⌈2m⌉#xff09;将关键字分成两部分#xff0c;左部分包含的关键字放在原节点中#xff0c;右部分包含的关键…B树的插入
原树 插入key后若导致原节点关键字数超过上限则从中间位置 ⌈ m 2 ⌉ \lceil\frac{m}{2}\rceil ⌈2m⌉将关键字分成两部分左部分包含的关键字放在原节点中右部分包含的关键字放到新节点中中间位置 ⌈ m 2 ⌉ \lceil\frac{m}{2}\rceil ⌈2m⌉的节点插入原节点的父节点 若此时导致其父节点的关键字个数也超过了上限则继续进行这种分裂操作直至这个过程传到根节点为止进而导致B树高度1
B树的删除
若被删除关键字在终端节点则直接删除该关键字若在非终端节点则用直接前驱或直接后继来替代被删除的关键字 直接前驱当前关键字左侧指针所指子树中最右下的元素直接后继当前关键字右侧指针所指子树中最左下的元素
若被删除关键字所在节点删除后的关键字个数低于下限则需要与其右或左兄弟借需要调整该节点的兄弟节点与双亲节点。比如下图当右兄弟很宽裕时用当前节点的后继、后继的后继来填补空缺 下图示例为当左兄弟很宽裕时用当前节点的前驱、前驱的前驱来填补空缺 当兄弟不够借时将关键字删除后与左或右兄弟节点及双亲节点中的关键字进行合并。 如上在合并过程中双亲节点中的关键字个数会-1若其双亲节点是根节点且关键字个数减少到0则直接删除根节点合并后的新节点成为根。若双亲节点不是根节点且关键字个数减少到 ⌈ m 2 ⌉ − 2 \lceil\frac{m}{2}\rceil-2 ⌈2m⌉−2则又要与它自己的兄弟节点进行调整和合并操作并重复上述步骤直至符合B树要求