根据 Knuth 的定义,m 阶 B 树(每个节点的最大子节点数)是一棵满足以下性质的树:
(1) 每个节点最多有 m 个子节点。
(2) 每个节点(根节点除外)至少有 ⌈m⁄2⌉ 个子节点。
(3) 如果根不是叶节点,则根至少有两个孩子。
(4) 具有 k 个子节点的非叶节点包含 k-1 个键。
(5) 所有叶子都出现在同一层次,并携带信息。
资料来源:维基百科
B 树的一些可视化如下所示:
从这个可视化中,我认为每个节点都有一个数组数据结构(或至少类似的东西)。
其他看起来像这样:
这看起来更像是一个类似列表的数据结构。
所以我的问题是:
B树使用哪种数据结构?
我的算法类中的使用示例是数据库和文件系统。有人知道SQLite如何实现 B-tree 节点吗?还是ext3?或者任何其他(众所周知的)现实世界的例子?