繁体   English   中英

B+树删除

[英]B+ tree deletion

所以我有这个 B+ 树:在此处输入图像描述

我必须在这里删除 49。 我该怎么做 go 呢?

会不会是这样:在此处输入图像描述

还是像这样? 在此处输入图像描述

  1. 删除 49 后,将 48 合并到包含 32 和 40 的邻居节点中。我们最终得到叶节点 (32, 40, 48)。
  2. 合并后,将其父节点从(45)更新为(32)。
  3. 由于节点(32)只有1个指针,所以可以将其剔除。

因此,我们最终在根的右子树上得到根节点 (32)--->(32,40,48)。

深入解释:

删除密钥有 3 种情况。 删除节点的密钥后,

如果节点仍然包含多于 floor((n+1)/2) 个键:

  1. 只需删除密钥。 无需更新。

如果节点包含少于 floor((n+1)/2) 个键:

  1. 如果相邻叶节点有备用密钥(即,给出一个密钥仍会导致其自身拥有多于 floor((n+1)/2) 个密钥),则向邻居借用一个密钥。
  2. 如果邻居无法借出密钥,则将当前节点与邻居节点合并。

** 对于情况 2 和 3,请务必记住在借用或合并后更新父节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM