我很难理解B树中的指针是什么。它们是否与二叉树的内部节点相同?
如果是,为什么有不同的名字?
,如果不是,他们有什么不同?
在阅读这篇文章(摘自wiki for B+树)之后,我感到困惑:
B+树的主要价值在于存储数据,以便在面向块的存储上下文中进行高效检索,特别是文件系统。这主要是因为与二进制搜索树不同,B+树具有非常高的扇出(指向节点中子节点的指针数,1通常为100或更多),这减少了在树中查找元素所需的I/O操作数。
我在其他文章中读过这样的文章: B+树是B树,其中‘指针’不保存数据,只保存键。这个指针是什么?如果有人能解释为什么一个叶节点有这么多的“指针”,那就太棒了:)
编辑:
经过评论部分的讨论,事情开始变得更清晰了。然而,在这个 highly up-voted answer 中,B树和B+树之间的区别,海报上贴出了一个图像,其中粉红色的箭头从内部节点发出。上面写着“指向数据记录的指针”。但是数据不是位于树叶中吗,那么为什么这里的指针呢?
发布于 2015-04-15 10:38:19
wiki条目讨论了二叉树和btree之间的区别。在二叉树中,每个父母都有两个子树:一个大于另一个,另一个更小。在btree中,每个父母都可以有许多孩子(这是wikipedia文章中的“狂热”),并且通过指针实现了从这个父母到每个孩子的连接。
这里是一棵树的一部分。如您所见,节点"944;1011;1037;1087“有5个子节点,因此有5个指向不同节点的指针。这就是维基百科引用的内容。如果这是一棵二叉树,那么每个级别将只有一个键和两个子级。
发布于 2016-04-14 09:15:48
我认为您会感到困惑,因为您已经在B+树中看到了内部节点中的所有指针都指向了树中的其他块/节点。如果你愿意的话,你可以叫它们树指针。叶节点中的指针指向数据记录或块(指向下一个叶节点的指针除外)。如果需要,可以调用这些数据指针。
因此,您可以说指针指向两个不同的事物:节点或数据,但这只是组织您的想法的一种方式。指针仍然只是普通的指针,指向某种数据。
资料来源:数据库系统的基础(第6版),第6版,作者: Ramez Elmasri (作者),Shamkant B. Navathe (作者)
https://stackoverflow.com/questions/29643677
复制相似问题