Task1
根据Inner Node实现Leaf Node的fromBytes方法
Inner Node第一个byte表示节点类型,0是内部节点,1是叶子节点,后一个int表示有多少个主键数,孩子节点的个数是主键数+1
就是将buffer中的二进制码转换成节点。
该方法的意思即先获取方法,然后通过获取nodeType,然后建立keys和children的列表,再次从buffer中获取key数量和值,其中children存放的也是页号,最后创建innernode
Leaf Node第一个byte表示类型,然后一个long表示右兄弟的页号,如果没有就为-1 ,后一个int表示一个leaf node的包含的数目,最后就是值
其中leafNode有两个构造方法,因为题目是重用一个已有的节点,而不是创建新的节点,因此选择下面一个构造方法。
Task2
实现get,getLeftmostLeaf,put,remove等方法
get方法
由BPlusTree出发,InnerNode的是递归方法,leafNode是基本方法。
通过根节点向下寻找leafNode,最后返回leafNode的key的id
InnerNode的递归方法,通过已有的比较的方法numLessThanEqual进行比较,然后取得子节点,并对子节点进行递归
leafNode直接返回当前节点
getLeftmostLeaf
只需要实现InnerNode和LeafNode中的就行
该方法是获得最左叶子结点,直接获得第一个孩子节点,并进行递归
直接返回叶子节点
put方法
先开一个新坑……待填