B 树17 Mar 2025 | 4 分钟阅读 B 树是一种专门的 m 路树,可广泛用于磁盘访问。一个 m 阶 B 树最多可以有 m-1 个键和 m 个子节点。使用 B 树的主要原因之一是它能够将大量键存储在单个节点中,并通过保持树的高度相对较小来存储大的键值。 m 阶 B 树包含 M 路树的所有属性。此外,它还包含以下属性。
并非所有节点都必须包含相同数量的子节点,但每个节点必须有 m/2 个节点。 下图显示了一个 4 阶 B 树。 ![]() 在对 B 树执行某些操作时,B 树的任何属性都可能被违反,例如节点可以拥有的最小子节点数。为了保持 B 树的属性,树可能会分裂或合并。 操作搜索B 树中的搜索与二叉搜索树中的搜索相似。例如,如果我们要在以下 B 树中搜索项 49。过程将如下所示:
B 树中的搜索取决于树的高度。搜索算法在 B 树中搜索任何元素需要 O(log n) 时间。 插入插入在叶节点级别进行。为了将项插入 B 树,需要遵循以下算法。
示例 将节点 8 插入下图所示的 5 阶 B 树中。 ![]() 8 将插入到 5 的右侧,因此插入 8。 ![]() 该节点现在包含 5 个键,这大于(5-1=4)个键。因此,从中间值 8 分裂该节点,并将其推到父节点,如下图所示。 ![]() 删除删除也执行在叶节点。要删除的节点可以是叶节点或内部节点。为了从 B 树中删除节点,需要遵循以下算法。
如果要删除的节点是内部节点,则用其按中序遍历的后继或前驱替换该节点。由于后继或前驱总是位于叶节点上,因此过程将与从叶节点删除节点的过程类似。 示例 1 从下图所示的 5 阶 B 树中删除节点 53。 ![]() 53 存在于元素 49 的右子节点中。删除它。 ![]() 现在,57 是节点中唯一剩余的元素,5 阶 B 树中必须存在的最小元素数为 2。它小于该值,其左侧和右侧子树中的元素也不足,因此将其与左侧兄弟节点和父节点的中间元素 49 合并。 最终的 B 树如下图所示。 ![]() B 树的应用B 树用于索引数据,并提供对存储在磁盘上的实际数据的快速访问,因为访问存储在磁盘上的大型数据库中的值是一个非常耗时的过程。 搜索包含 n 个键值的未索引和未排序数据库在最坏情况下需要 O(n) 的运行时间。但是,如果我们使用 B 树来索引该数据库,则在最坏情况下将在 O(log n) 时间内搜索。 下一主题B+ 树 |
AA 树简介 AA 树由 Arne Anderson 发明,是一种自平衡二叉搜索树,旨在简化和加速实现。在二叉搜索树 (BST) 中,每个节点最多可以有两个子节点,并且父节点左侧的每个节点...
阅读25分钟
二叉搜索树 在本文中,我们将讨论二叉搜索树。本文对技术背景的学生将非常有帮助和信息丰富,因为它是他们课程中的重要主题。在直接学习二叉搜索树之前,让我们先看看一个...
11 分钟阅读
是 B 树的扩展,它允许高效的插入、删除和搜索操作。在 B 树中,键和记录都可以存储在内部节点和叶节点中。而在 B+ 树中,记录(数据)只能存储在叶节点...
阅读 3 分钟
数据结构中,红黑树是二叉搜索树。红黑树的前提是我们应该了解二叉搜索树。在二叉搜索树中,左子树中节点的值应该小于节点的值,而右子树中节点的值应该大于该节点的值。在二叉搜索树中,左子树中节点的值应该小于...
阅读 63 分钟
二叉树意味着节点最多可以有两个子节点。在这里,二叉这个名字本身就暗示着“两个”;因此,每个节点可以有 0、1 或 2 个子节点。让我们通过一个例子来理解二叉树。上图是一棵二叉树,因为每个节点...
5 分钟阅读
由 GM Adelson - Velsky 和 EM Landis 于 1962 年发明。该树以其发明者的名字 AVL 命名。可以定义为高度平衡的二叉搜索树,其中每个节点都关联一个平衡因子,该因子通过...
7 分钟阅读
简介:我们学习了线性数据结构,如数组、链表、栈和队列,在这些数据结构中,所有元素都按顺序排列。某些数据组织要求将数据分类到组和子组中。不同的数据结构用于不同的...
14 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India