当所有节点都是单例时,如何在B树中删除

时间:2014-03-14 21:48:08

标签: algorithm b-tree

我正在通过在美妙的维基百科on this page.上给出的B-tree示例(我使用维基百科,因为Stackoverflow告诉我...... How do you remove an element from a b-tree?

我对这棵树的建造感到高兴。

enter image description here

..我发现算法很优雅。

我的问题是维基百科上删除节点的描述似乎缺少案例。这三个案例是为了在删除后重新平衡'是:

  • 如果缺陷节点的右兄弟存在且且元素数量超过最小数量,则向左旋转
  • 否则,如果缺陷节点的左侧兄弟存在且且元素数量超过最小数量,则向右旋转
  • 否则,如果两个直接兄弟姐妹只有最少数量的元素,那么与兄弟姐妹合并,将他们的分离器从父母身上取下来。

如果缺陷节点有 no 兄弟姐妹(例如在上面的树中,删除' 1',' 3&#39),这些都没有用处;现在缺乏,没有兄弟姐妹)。

我的问题是,缺少哪些案例/案例(假设我已经正确理解),以及 维基百科页面应该说什么?

1 个答案:

答案 0 :(得分:2)

  

例如,在上面的树中,删除' 1',' 2'现在缺乏并且没有兄弟姐妹

是的,它有一个兄弟:节点(6,_)。如果您有没有兄弟姐妹,那么您就是根。

所以在这种情况下,我们应用选项3并最终得到一个两级树。