Advertisement

(了解B树看过来)你懂什么是B树么???

阅读量:

B树

概念

在计算机科学领域中B树(英语:B-tree)是一种高度平衡的树状结构物,在保证数据有序排列的同时实现了高效的存取操作。该数据结构通过将多个键值与相应的记录信息结合在一起存储于同一节点中,并通过中间索引来实现快速定位目标记录的功能特性,在理论层面具有重要的研究价值并且在实际应用中发挥着不可替代的作用。与传统的二叉查找树相比B树更适合用于处理大量数据的情况因为其能够在较大的磁盘块内存储更多的索引信息从而显著提升了文件系统的读写效率以及存储容量的最大利用率。基于此特点B树不仅被广泛应用于数据库系统中还为文件系统设计提供了重要参考框架

性质

一个 m 阶的B树是一个有以下属性的树:

所有_nodes不超过_m_ children.
所有的_internal_nodes至少具有⌈m/2⌉ children.
如果root_node不是叶结点,则该root_node至少有两个子女.
所有的_non-leaf_nodes与_k_children包含_k−1_keys.
所有的_leaf_nodes处于同一层次的层级结构中.

每个内部节点都有一个特定的键值来区分其左右两棵子树。在实际应用中,默认情况下这个键值位于其左、右两棵子树之间。具体来说,在左、右两棵子树中所有的元素都会被分配到指定的位置上:其左子树中的所有元素均小于等于该键;中间区域中的元素则满足特定条件;右、左两棵子树中的所有元素均大于等于该键。

在这里插入图片描述

算法

搜索

B树的搜索过程与二叉搜索树遵循相同的基本原理。以根节点作为起点,在逐层深入地进行递归遍历的过程中,在每一层次中都会缩减至仅限于包含该搜索值的那一棵子树中进行查找操作;其中每个子树的具体数值范围则由其父节点所限定

插入

所有插入操作均始于根节点。为了将新的元素加入树中,请先搜索该树以确定新元素应附着于的相应父节点。详细说明将此元素附加至该父节点的过程如下:

  1. 当一个树结点所含有的元素数量低于指定的最大值时,则该树结点还有剩余的空间来容纳更多的元素。
  2. 当新数据项被添加时,在叶子结点上直接追加会导致超出最大容量限制。
复制代码
a) 中间位置选取中间数值作为分割键。
b) 将所有小于中间数值的项放置于左子树,并将所有大于中间数值的项放置于右子树。
c) 将分割键加入到其父结点后可能会导致连锁反应。
d) 如果当前树没有父结点(即当前叶子是根结点),则创建一个新的根结点并增加整个树的高度。

如果持续分裂直到达到根结点,
这样会生成一个新的根结点,
它包含一个分割值以及两个子结点。
这正是因为根结点不像内部结点那样受限于最少子结点数量。
每个容器最多容纳_U_-1个元素。
当一个容器发生分裂时,
其中一个元素会被转移至其父容器,
但与此同时又引入了一个新的新元素。
为了确保这种分配方式的有效性,
最大的_U_-1必须能够将_U_-1分成两个合法的容器。
具体来说,
如果_U_-1是奇数,
则_U_=2_L_,
这样总共会有2_L_-1个新旧分配。
其中一个是_L_-1个,
另一个则是_L_个,
都是完全符合条件的。
而当_U_-1是偶数时,
则满足_U_=2_L_-1,
这样总共会有2_L_-2个新旧分配。
其中一个是_L_-₁,
正好符合最小的新容量要求。

删除
  1. 首先定位并移除所需元素;随后对整个数据结构进行优化以确保其符合预设要求。
  2. 自上而下地处理这棵数据结构,在访问每个节点前对当前子树进行重新排列以确保一旦遇到需要移除的键后无需进一步修正。

全部评论 (0)

还没有任何评论哟~