好吧,我正在学习考试,我对以下内容感到困惑。 下图是一个t = 3的B树,因此每个节点最多可以有2t-1个密钥和至少t-1个密钥。 我被要求删除key = 3。 在这种情况下,我无法理解为什么我需要与它的儿子一起加入根。我知道删除算法是防御性的,因为它从根开始并检查每个节点,因此它不需要再次去任何祖先。 但是,如果我不与其儿子一起加入根,那么哪条规则会被打破?
原始B树
删除键3后
至于我,我只会删除键3,就是这样。
答案 0 :(得分:1)
它不会破坏任何规则,算法只是在查找给定键时执行每个可能的节点合并。这对于确保在删除后不需要向上遍历树是必要的。 此外,树的高度会降低,这会加快以后的查找速度。
因此,这种行为是有效实施B树的算法决策。