B+ 树2025年4月24日 | 阅读 3 分钟 B+ 树是 B 树的扩展,它允许高效的插入、删除和搜索操作。 在 B 树中,键和记录都可以存储在内部节点和叶子节点中。而在 B+ 树中,记录(数据)只能存储在叶子节点中,内部节点只能存储键值。 B+ 树的叶子节点通过单向链表连接在一起,以使搜索查询更有效。 B+ 树用于存储无法存储在主内存中的大量数据。由于主内存的大小总是有限的,B+ 树的内部节点(访问记录的键)存储在主内存中,而叶子节点存储在辅助存储器中。 B+ 树的内部节点通常称为索引节点。下图显示了一个 3 阶 B+ 树。 ![]() B+ 树的优点
![]() B 树与 B+ 树对比
B+ 树中的插入步骤 1: 将新节点插入为叶子节点。 步骤 2: 如果叶子节点没有足够的空间,则分裂节点并将中间节点复制到下一个索引节点。 步骤 3: 如果索引节点没有足够的空间,则分裂节点并将中间元素复制到下一个索引页。 示例将值 195 插入到下图所示的 5 阶 B+ 树中。 ![]() 195 将被插入到 120 的右子树中,在 190 之后。将其插入到所需位置。 ![]() 该节点包含的元素多于最大允许元素数(即 4 个),因此分裂节点并将中位数节点向上移至父节点。 ![]() 现在,索引节点包含 6 个子节点和 5 个键,这违反了 B+ 树的性质,因此我们需要对其进行分裂,如下图所示。 ![]() B+ 树中的删除步骤 1: 从叶子节点删除键和数据。 步骤 2: 如果叶子节点包含的元素少于最小允许元素数,则将该节点与其兄弟节点合并,并删除它们之间的键。 步骤 3: 如果索引节点包含的元素少于最小允许元素数,则将该节点与其兄弟节点合并,并将它们之间的键向下移动。 示例从下图所示的 B+ 树中删除键 200。 ![]() 200 存在于 190 的右子树中,在 195 之后。将其删除。 ![]() 使用 195、190、154 和 129 合并两个节点。 ![]() 现在,节点中只剩下元素 120,这违反了 B+ 树的性质。因此,我们需要使用 60、78、108 和 120 合并它。 现在,B+ 树的高度将减少 1。 ![]() 下一主题数据结构中的红黑树 |
二叉树意味着节点最多可以有两个子节点。在这里,二叉这个名字本身就暗示着“两个”;因此,每个节点可以有 0、1 或 2 个子节点。让我们通过一个例子来理解二叉树。上图是一棵二叉树,因为每个节点...
5 分钟阅读
数据结构中,红黑树是二叉搜索树。红黑树的前提是我们应该了解二叉搜索树。在二叉搜索树中,左子树中节点的值应该小于节点的值,而右子树中节点的值应该大于该节点的值。在二叉搜索树中,左子树中节点的值应该小于...
阅读 63 分钟
是一种专门的多路树,可广泛用于磁盘访问。m 阶的 B 树最多可以有 m-1 个键和 m 个子节点。使用 B 树的主要原因之一是它能够存储大量键...
阅读 4 分钟
二叉搜索树 在本文中,我们将讨论二叉搜索树。本文对技术背景的学生将非常有帮助和信息丰富,因为它是他们课程中的重要主题。在直接学习二叉搜索树之前,让我们先看看一个...
11 分钟阅读
AA 树简介 AA 树由 Arne Anderson 发明,是一种自平衡二叉搜索树,旨在简化和加速实现。在二叉搜索树 (BST) 中,每个节点最多可以有两个子节点,并且父节点左侧的每个节点...
阅读25分钟
由 GM Adelson - Velsky 和 EM Landis 于 1962 年发明。该树以其发明者的名字 AVL 命名。可以定义为高度平衡的二叉搜索树,其中每个节点都关联一个平衡因子,该因子通过...
7 分钟阅读
简介:我们学习了线性数据结构,如数组、链表、栈和队列,在这些数据结构中,所有元素都按顺序排列。某些数据组织要求将数据分类到组和子组中。不同的数据结构用于不同的...
14 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India