Please enable JavaScript.
Coggle requires JavaScript to display documents.
b+ tree (实现 (问题 (删除到最后应该怎么办:question: (B+ Tree Visualization, 直接回到叶节点),…
b+ tree
实现
问题
假如一开始把根当做叶节点,但插入0,1,2,3,4后直接print文件会出错(不出现最后一个4):question:
-
文件IO的时候,我总是用偏移量来带入函数计算.但最后都没有用read方法更新node对象
-
-
-
删除了之后,有些key_total为2,3什么的,为什么:question:
-
-
插入
-
-
插入第一个的时候,我们把根设置为leaf,那么我们会直接插入进去,怎么办:question:
-
-
-
如何处理分裂时向上分裂的问题:question:
如果需要向上继续分裂,那么下一次操作时就可以把它往上再移动一层.这样一来,因为如果到了根位置就一定分裂结束,所以一定可以分裂完毕
-
split
- 父节点一定为内节点,所以父节点右移时要 pi,ki,pi+1,ki+1,...pn,kn,pn+1都要赋值进去:!:(pn+1不要忘了)
-
:moneybag:索引
-
线性索引
-
静态索引
多分树
一个磁盘块能记录的(key,pointer)对是固定的
为什么不采用二叉树:question:
二叉树要访问6次外村
八叉树只要访问2次外村
一次io就是访问一个block
一个block只能存储一定数量的(key,pointer)
-
-
-
-
:moneybag:b树
:one:不同点
内节点存储的信息
-
-
b树内节点则是存储关键码,并且关键码的数据指针也存储
-
:moneybag:Property
:explode:孩子个数[ceiling(n/2),n],叶子节点关键字个数[ceiling(n/2),n-1].
:warning:在ADS课里,order=3的2-3树是孩子和叶子节点都是2~3.而order=4的2-3-4树都是2-3-4
-