【问题标题】:Disadvantages of top-down node splitting on insertion into B+ tree自顶向下节点分裂插入B+树的缺点
【发布时间】:2013-01-12 11:20:25
【问题描述】:

对于 B+ 树插入,为什么要沿着树向下遍历,然后再向上分裂父级?

Wikipedia 建议使用这种插入方法:

执行搜索以确定新记录应该放在哪个存储桶中 进入。

  • 如果存储桶未满(插入后最多 b - 1 个条目),则添加记录。
  • 否则,拆分存储桶。
    • 分配新叶子并将存储桶的一半元素移动到新存储桶。
    • 插入新叶的 最小的键和地址到父级。
    • 如果父级已满,也将其拆分。
      • 将中间键添加到父节点。
    • 重复直到找到不需要拆分的父节点。

如果根分裂,创建一个新的根,它有一个键和两个 指针。

你为什么要遍历树然后返回执行拆分?为什么不在下坡路上遇到节点时拆分它们呢?

对我来说,建议的方法执行两倍的工作,并且还需要更多的簿记。

谁能解释为什么这是插入的首选方法,而不是向下拆分的方法,以及在遍历期间插入的缺点是什么?

【问题讨论】:

    标签: b-tree


    【解决方案1】:

    您必须回溯树,因为在到达那里之前,您实际上并不知道是否需要在最低级别进行拆分。

    这一切都在“如果桶未满,……”这句话中。

    您还应该知道,它远不是工作量的两倍。由于您在向下的过程中记住了各种各样的东西(节点指针、节点内的索引等),因此在返回的过程中没有那么多的计算或搜索。

    【讨论】:

    • 啊,我明白了。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2011-02-04
    • 2011-12-10
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2012-10-12
    相关资源
    最近更新 更多