B-Tree一次性删除

时间:2015-06-20 22:32:32

标签: algorithm tree b-tree

是否可以一次性从B-Tree中删除元素?

维基百科说"做一次传递树,但在进入(访问)节点之前,重构树,以便一旦遇到要删除的密钥,就可以删除它而不需要任何触发进一步重组" 但是没有说明它是如何完成的。

Google只为我提供了删除必须重新构建树的元素的过程。

Cormen对此也没有任何说法。

1 个答案:

答案 0 :(得分:1)

可能在名为PO-B+ tree的B +树的变体中。在这个"准备操作B + tree" 节点中的键数可以在n-1和2n + 1之间,而不是通常的B + -tree中的n和2n (引自论文)。对于删除操作(在论文中称为 PO-delete ),您只需合并(在论文中称为" catenate")可以合并的所有节点(根除)(或从邻居那里拿钥匙),同时朝向叶子移动。对于 PO-insert 操作,您将拆分所有节点(包括根)。该描述在论文中给出。

如果树在多线程环境中使用,这种抢先重组才有意义,因为它减少了锁定,并增加了可靠性。如果一个树只被一个演员访问,它就不会付出代价。