删除B +树

时间:2011-07-09 01:24:57

标签: b-tree

作为一名学生,我一直在尝试用C语言实现B +树。插入没问题,但删除操作让我失望。我的一个问题是: 是否可以保留内部节点中的密钥,同时删除叶节点中的密钥? 当内部节点不是叶子的父节点时,可能会发生这种情况。 我的描述是否足够清晰?有没有人有类似的经历?

1 个答案:

答案 0 :(得分:3)

在处理数据结构时,您应该问自己的问题是“不变量是什么?”对于B +树,一些不变量是:

  • 记录存储在叶节点中,
  • 叶节点必须至少半满。

因此,如果您认为B +树允许您保留不再与记录对应的密钥,那就没问题。只需确保您的插入和搜索算法在给定特定的不变量集合时仍然有效。

通常,在任何类型的树中遇到与其中一个记录不对应的密钥有点奇怪。我还期望在具有大扇出的B +树中纠正它的成本相当小。