[PTA] Self-printable B+ Tree
最近做了PTA的Self-printable B+ Tree,发现这道题的题目描述有诸多不明确的地方。在进行了各种尝试之后,终于摸清了本题所要求的B+树的插入规则,特此写下来记录一下,以给做这道题且被卡住的同学指明方向。
关于“B+ tree of order 3”
在这道题中,“B+ tree of order 3”指的是:叶子节点最多存三个key,索引节点最多存两个index,并不是树中所有节点都能存三个值。当然,B+树可以是所有节点都存三个值的,只是这道题的B+树这么要求了而已。这一点可以从样例中分析得到。
这意味着,插入的时候,如果一个叶子节点迎来了它的第四个值,就要进行分裂;如果一个索引节点迎来了它的第三个index,就要进行分裂。
关于插入的位置
经过尝试后得出结论:尽量靠左插入。
也就是说,如果向叶子节点为[1,2][3,4][6,7]
的B+树中插入一个5
,那么结果应该为[1,2][3,4,5][6,7]
。
而不是
[1,2][3,4][5,6,7]
。其实想来这也很合理,因为靠左插入再结合下面的索引规则,就不用对B+树的索引值进行维护了。这样插入永远不会破坏B+树的索引。