Algorithm 在一次过程中删除B-树

Algorithm 在一次过程中删除B-树,algorithm,tree,b-tree,Algorithm,Tree,B Tree,是否可以在一次过程中从B-树中删除元素 Wikipedia说“在进入(访问)一个节点之前,只需对树进行一次传递,就可以重新构造树,这样一旦遇到要删除的密钥,就可以将其删除,而无需进行任何进一步的重新构造” 但没有说明是怎么做到的 Google只给了我删除一个元素的过程,而这个元素必须重新构建树 Cormen也没有说任何关于它的事情。这在一种叫做B+树的变体中是可能的。在这种“准备操作B+树”中,节点中的键数可能在n-1和2n+1之间,而不是通常的B+树中的n和2n(引自论文)。对于删除操作(本文

是否可以在一次过程中从B-树中删除元素

Wikipedia说“在进入(访问)一个节点之前,只需对树进行一次传递,就可以重新构造树,这样一旦遇到要删除的密钥,就可以将其删除,而无需进行任何进一步的重新构造” 但没有说明是怎么做到的

Google只给了我删除一个元素的过程,而这个元素必须重新构建树


Cormen也没有说任何关于它的事情。

这在一种叫做B+树的变体中是可能的。在这种“准备操作B+树”中,节点中的键数可能在n-1和2n+1之间,而不是通常的B+树中的n和2n(引自论文)。对于删除操作(本文中称为PO delete),您只需合并(本文中称为“catenate”)所有可以合并(或从邻居处获取密钥)的节点(根节点除外),同时向叶子移动。对于PO插入操作,您可以拆分所有节点(包括根节点)。文中对此进行了描述


只有在多线程环境中使用树时,这种先发制人的重构才有意义,因为它减少了锁定,并增加了并发性。如果一棵树只被一个参与者访问,那就不值得了。

好吧,我想我会坚持默认的删除。。。谢谢