首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从B+树中删除密钥

从B+树中删除密钥
EN

Stack Overflow用户
提问于 2015-12-06 00:10:33
回答 2查看 1.4K关注 0票数 0

我的教授正在做一个关于B+树删除的讲座,我感到非常困惑。据他说,他删除了B+树中的任何密钥:

代码语言:javascript
复制
1- First navigate to the leaf *L* where it belongs.
2- If the *L* is at least half full if you can simply delete it.
3- If it contains d-1 elements then you need to redistribute and merge.

如果您看到下面的图片,这里我想从B+树中删除19和20。

在从B+树中删除19和20之后。

问题:

我搞不懂为什么这里需要重新分配和合并?如果您只是简单地从叶节点中删除19和20而没有任何分布,那么它应该可以工作,对吗?为什么要在这里进行再分配?有人能解释一下吗?

这是因为左指针24指向20,而不是19。这就是为什么20而不是19需要重新分配。

EN

回答 2

Stack Overflow用户

发布于 2015-12-06 00:33:48

B+树是一种自平衡搜索树.

自平衡树需要保持最大树的深度与它所持有的元素数的对数成正比。

B+就是这样做的,在插入和重新分配时进行拆分和添加层,在删除时删除节点。

票数 1
EN

Stack Overflow用户

发布于 2015-12-06 04:54:35

好吧我明白问题了。

B+树的性质

  • 所有的叶子都应该在相同的深度,每个叶节点中的最小元素应该等于树的深度。见下面的例子:
  • 所有的叶子都在相同的深度,这里d= 2。
  • 每个叶节点必须包含d个元素,否则必须执行重新分配和合并。
  • 所有数据指针都包含在叶节点中。
  • 所有元素都应包含在叶节点中。
  • 除了根以外,节点上的d2*d键之间应该存在。
  • 应该在d + 12*d + 1子指针之间存在。

在下面给出的B+树中,每个节点都有22*2数据条目,除了根之外。每个节点都有一个最小的两个键。

只有B+树的根只能少于d键,这是我们唯一的例外。

在我的问题中,当您删除19时,B+树的属性没有被违反,但是当您删除20时,节点中包含的元素总数小于d,因此必须执行重新分配和合并,这样才不会违反B+树的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34112462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档