B-树
Multiway Tree¶
多叉树任意节点的所有子树也都是有顺序的
多叉树可以按固定的方法向二叉树转化:
- 对所有节点只保留与最左侧子节点的连接,删除其他连接
- 从左到右依次连接同一层的兄弟节点(siblings)
B-Tree¶
Banlanced Multiway Tree, 顾名思义,B-树是一种平衡的多路查找树,是平衡二叉树的外延概念。
B-Tree 是为外部查找(如磁盘)设计的一种平衡查找树。
系统从磁盘读取数据到内存时是以存储块 (block) 为基本单位的,位于同一个磁盘块中的数据会被一次性读取出来,而不是需要什么取什么。B-Tree 结构的数据可以让系统高效的找到数据所在的磁盘块。
为了描述 B-Tree,首先定义一条记录为一个二元组
定义¶
一颗 m 阶 B-树 (m 路 B-树)满足:
- 所有叶子节点在同一层(level),所有叶节点实际上不存在,都是空节点,平衡因子=0
-
- 根节点若非空(不是叶节点/空节点),则有至少 2 颗子树
- 除 根节点 以外所有 内部节点 的 子节点 / 子树 数量
满足: -
- 根节点至少有
个关键字,至多有 个关键字
- 根节点至少有
- 非根节点至少有
个关键字,至多有 个关键字 - 每个节点中的关键字都按照从小到大(升序)排列,每个关键字的左子树中的所有关键字都小于它,右子树中的所有关键字都大于它(也可以反过来,只要满足查找树的定义)
推论¶
高度为