本文将介绍btree的原理与golang的实现。
什么是Btree
B树是一种平衡的多路查找树。树,可广泛用于磁盘访问。 M阶树顺序的B树最多可以有m-1个键和M个子树。 使用B树的主要原因之一是它能够在单个节点中存储大量键,并且通过保持树的高度相对较小来存储大键值。
概念
- 根节点:最顶层节点
- 叶子节点:没有子树的节点就是叶子节点
- 度数:在树中,每个节点的子节点(子树)的个数就称为该节点的度(degree)。
特点
1.每个叶结点具有相同的深度,也就是树的高度。
2.节点的元素以非降序排序,即x.k <= x.k1 <= … <= x.kn。且 t-1 <=n <= 2t-1
使用场景
Btree主要用于提高访问数据的效率,比如数据库的索引文件。
实现
1、定义一个btree,包含树的度,以及根节点,注意根节点是引用类型,说明只有一个根
type btree struct {
degree uint // 树的度
root *node // 根节点
}
2、定义树的节点,btree的节点信息,存储的是一个数组和子节点
// node 定义树的