从B树中删除节点

时间:2016-10-22 08:16:57

标签: c++ c algorithm tree b-tree

min no of keys = 2 最大密钥数= 5

                            P

              CL                           TX
       AB    DEJK    NO               QRS    UV    YZ   

删除密钥D:

                    CLPTX
       AB    EJK    NO   QRS    UV    YZ  

此答案按照Introduction to Algorithms by thomas H . Cormen 皮克。没有501

它说:这是情况3b:递归不能下降到节点CL,因为它只有2个键所以我们需要向下推P并将其与CL和TX合并以形成CLPTX我们从中删除D leaf(case1)

但我认为这个答案也很好:

                            P

              CL                           TX
       AB    EJK    NO               QRS    UV    YZ 

因为叶节点EJK仍然有3个键满足最小键约束。

请解释一下。

1 个答案:

答案 0 :(得分:4)

删除算法从上到下,因此无法知道叶子是否足够。

为确保算法每次都有效,我们决定合并具有最小键(但合法)的单元格。这是因为如果叶子需要捐赠"从他们的父母那里,他们的父母将能够提供他们。

注意:我说"离开"简化事情,但它也适用于整个过程中的每个细胞。

注意2:这就是为什么在<div id="visitDiv"> @model.sizingcount </div> 你做相反的事情,即使在特定情况下你也可能不必这样做。