0

我有关于我的作业的问题:

1)首先,假设4个指针可能适合一个内部节点,每个叶子节点可以存储4个键值,B+树应该用以下值构造:

2、3、5、7、11、17、19、23、29、31。

通过该站点,我收到了下面的树。我不确定它是否正确,因为在叶子节点中,可能有三个键值:

在此处输入图像描述

问题从插入和删除开始。因此插入 9、10、8,我收到了下面的树:

在此处输入图像描述

但是当我删除 23 时,我描述如下。问题是,19 不能独自一人,因为叶子必须是半满的:

在此处输入图像描述

之后删除 19 会出现同样的问题:

在此处输入图像描述

问题是:

1)初始树是否正确?

2)我对删除的假设是否正确?

3) 删除后的树必须如何相似?

带着敬意。

4

1 回答 1

1

删除 23 后,如果叶节点的键少于 n/2,则该叶节点不存在是正确的。B+ Tree中的删除基本有3种情况:

情况1:节点仍然有n/2个以上的key;无需更改。

如果节点的键少于 n/2,

案例 2:从邻居叶节点借用密钥。更新父节点。

如果我的邻居都没有足够的钱给我一把钥匙,

案例 3:与邻居叶节点合并。更新父节点。

在删除键 23 的情况下,包含键 19 的节点将寻求与其任一邻居合并。合并后,记得更新你的父节点!

于 2020-10-20T21:39:33.947 回答