树:B*树

来自Wikioe
Eijux讨论 | 贡献2021年4月23日 (五) 17:46的版本 (建立内容为“category:数据结构 == 关于 == B*树 是“[http://wiki.eijux.com/%E6%A0%91%EF%BC%9AB%2B%E6%A0%91 B+树]”的变体,在“B+树”的基础上(叶…”的新页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索


关于

B*树 是“B+树”的变体,在“B+树”的基础上(叶子结点中包含全部关键字信息,及指向含有这些关键字记录的指针):

  1. B*树 增加了非根非叶子结点指向兄弟的指针
  2. B*树 定义了非叶子结点关键字个数至少为“2m/3”,即:块的最低使用率为“2/3”。【不同于“B+树”及“B树”的“1/2”】
B*树:典型结构.png

B*树的分裂

当一个结点满时,

  1. 如果它的下一个兄弟结点未满:
    1. 将一部分数据移到兄弟结点中,
    2. 再在原结点插入关键字,
    3. 最后修改父结点中兄弟结点的关键字(因为兄弟结点的关键字范围改变了);
  2. 如果兄弟也满了:
    1. 在原结点与兄弟结点之间增加新结点,
    2. 并各复制1/3的数据到新结点
    3. 最后在父结点增加新结点的指针。