B树中的指针是什么?

时间:2015-04-15 07:05:41

标签: algorithm data-structures b-tree

我很难理解B树中的'指针'是什么。它们是否与二叉树的内部节点相同?

如果是,为什么不同的名字?
如果不是,它们有何不同?

在阅读本文之后(从维基中获取B +树)我的困惑:

  

B +树的主要价值在于存储数据,以便在面向块的存储上下文中进行有效检索 - 特别是文件系统。这主要是因为与二叉搜索树不同,B +树具有非常高的扇出(节点中指向子节点的指针数,1通常大约为100或更多),这减少了I / O操作的数量需要在树中找到一个元素。

我在其他SO帖子中读到B +树是B树,其中'指针'不包含数据,只有键。那么,这个指针是什么?如果有人可以解释如何向叶子节点提供如此多的“指针”,那将是非常棒的:)

编辑:

在评论部分讨论后,事情开始变得更加清晰。然而,在这个 highly up-voted answer 到B树和B +树之间的差异,海报上放了一个图像,粉红色的箭头从内部节点出来。它说“数据记录指针”..但不是叶子中的数据,为什么指针在这里?

2 个答案:

答案 0 :(得分:3)

wiki条目讨论了二叉树和btree之间的区别。在二叉树中,每个父母有两个孩子:一个比另一个大,一个小。在btree中,每个父母可以有很多孩子(这是维基百科文章中的高扇出),并且通过指针实现从父母到每个孩子的连接。 Section of a btree

这是btree的一部分。正如你可以看到节点" 944; 1011; 1037; 1087"有5个孩子,因此5个指针指向不同的节点。这就是维基百科引用的内容。如果那是二叉树,那么每个级别只有1个密钥和2个子级。

答案 1 :(得分:0)

我认为您感到困惑,因为您已经在B +树中读到内部节点中的所有指针都指向树中的其他块/节点。如果需要,可以将它们称为树指针叶节点中的指针指向数据记录或块(指向下一个叶节点的指针除外)。如果需要,可以调用这些数据指针

所以你可以说指针指向两个不同的东西;节点或数据,但这只是组织你的想法的一种方式。指针仍然是常规指针,指向某种数据。

<强>来源: 数据库系统基础(第6版)第6版 作者:Ramez Elmasri(作者),Shamkant B. Navathe(作者)