对于 B+ 树插入,你为什么要遍历树然后向上分裂父母?
维基百科建议这种插入方法:
执行搜索以确定新记录应进入哪个存储桶。
- 如果桶未满(插入后最多 b - 1 个条目),则添加记录。
- 否则,拆分桶。
- 分配新叶子并将桶的一半元素移动到新桶。
- 将新叶子的最小键和地址插入父节点。
- 如果父级已满,也将其拆分。
- 将中间键添加到父节点。
- 重复直到找到不需要拆分的父级。
如果根分裂,则创建一个具有一个键和两个指针的新根。
你为什么要遍历树然后返回执行拆分?为什么不在下行过程中遇到节点时拆分节点?
对我来说,所提出的方法执行了两倍的工作,并且还需要更多的簿记。
谁能解释为什么这是插入的首选方法,而不是向下拆分的方法,以及在遍历期间插入的缺点是什么?