我在特定情况下处理BTree中的删除
M = 5 - 即 - 节点中的最大键数为4,节点中的最小键数为2
现在当我接近一个节点时,使用防御方法(我必须使用这个)在BTree中删除时,我必须保证它有一个超过所需最小值的密钥。
这是我的问题 - 让我说我有一个带有一把钥匙的根和两个带有两把钥匙的孩子。 当我接近其中一个孩子时,我必须保证它至少有3个钥匙(因为M = 5)。
我有两种方法可以做 - 从邻居借钱或从父亲那里借钱并合并。我不能从邻居那里借用,因为它有至少2个密钥但是从父亲那里借用并合并创建了一个带有5个密钥的节点 - 它超过了允许密钥的最大值(因为M = 5) )。
在这种情况下我该怎么办? 更具体地说 - 处理这种情况的正确方法是什么
答案 0 :(得分:1)
对于某些d,经典B树将非根节点的密钥计数限制在d和2d之间。这意味着仅当下溢已经已经发生并且合并中涉及的另一个节点具有最小占用率时才可以合并节点。与从父节点拉出的分隔符键一起,这使得密钥计数为(d-1)+ d + 1 = 2d,这是适合节点的最大值。在“以防万一”的情况下合并下去是不可能的。