繁体   English   中英

这棵B +树有效吗?

[英]Is this B+ Tree Valid?

在B +树中,是否可以存在一个非叶节点,以便其键值被删除? 这意味着B +树在其中间非叶节点中具有一个值,但在其任何叶节点中均没有。

考虑以下结构。 我在研究B +树时碰到了这个问题。 在该结构13中不是叶节点。 但这是一个非叶节点。 (实际上,它已在前面的说明中删除。 图片的链接。在此链接中,转到页面底部)

我不了解的树的图像

如果是,那么如何删除数据?

这是一个错误还是我缺少什么?

您发布的图片有效。 该树返回的唯一数据是您在最后一行中找到的数据。 由于13已从树中删除,因此已从最后一行中删除。 非叶节点中存在13的事实与您的结果无关紧要,当遍历树时,它只有一个可比较的值。 在这种情况下,如果将13更改为16 (基于上述约定),则树的行为不会有所不同。

道格拉斯·费舍尔(Douglas Fisher)在B +树上做了一个完整的视频系列,与阅读文章相比,学习起来更容易。 第1部分可以在这里找到。


编辑 :我在评论中的回复太长,因此我将其放在此处。 另外,这是有用的信息。

如果要搜索12并达到13 ,则将比较IS 12 < 1313 <= 12 ,左边为true,因此您将向下遍历到左边的叶子。 无论13是否为16都会发生这种情况,因为12 < 16也是如此。

如果您要搜索16并达到13 ,则将比较IS 16 < 1313 <= 16 ,正确的表达式为true,因此您将遍历到右边的叶子。 然后,您将在那里找到16的值。

如果要搜索13 (不存在),则会询问IS 13 < 1313 <= 13 ,正确的表达式为true,因此您将遍历到右边的叶子并发现那里没有13并且此时您将被踢出13没有价值。

暂无
暂无

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

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