【发布时间】:2013-01-12 11:20:25
【问题描述】:
对于 B+ 树插入,为什么要沿着树向下遍历,然后再向上分裂父级?
Wikipedia 建议使用这种插入方法:
执行搜索以确定新记录应该放在哪个存储桶中 进入。
- 如果存储桶未满(插入后最多 b - 1 个条目),则添加记录。
- 否则,拆分存储桶。
- 分配新叶子并将存储桶的一半元素移动到新存储桶。
- 插入新叶的 最小的键和地址到父级。
- 如果父级已满,也将其拆分。
- 将中间键添加到父节点。
- 重复直到找到不需要拆分的父节点。
如果根分裂,创建一个新的根,它有一个键和两个 指针。
你为什么要遍历树然后返回执行拆分?为什么不在下坡路上遇到节点时拆分它们呢?
对我来说,建议的方法执行两倍的工作,并且还需要更多的簿记。
谁能解释为什么这是插入的首选方法,而不是向下拆分的方法,以及在遍历期间插入的缺点是什么?
【问题讨论】:
标签: b-tree