将Btree保存到磁盘文件并读取它

fla*_*hen 6 algorithm indexing b-tree

我想在磁盘文件中保存一个Btree(不确定二进制文件).然后将其读入内存.某些Level-order遍历可能是二进制Btree的好方法.但如果它不是二元的那个.我将叶子节点中的Btree构建到内存中的rootnode.我相信我必须在磁盘文件中定义一些结构并输出树节点.使用一些额外的标签来识别文件中的节点?如何遍历可能是这里的关键问题.我不知道保存节点和指针的好方法.然后阅读它.在记忆中构建树.有什么好主意吗?非常感谢.

aka*_*ppa 5

如果你真的想做类似的事情,你可以在每个节点分配一个id并以这种格式保存节点:

[node-id value left-node-id right-node-id]

然后使用广度优先搜索访问树.

当您想要重建树时,创建一个map id-> node然后向后读取文件:因此,当您读取记录时,创建节点,将其注册到地图并分配从左和右节点获取节点地图.


Pet*_*ham 5

B-Trees的常用技术是确保节点的大小等于磁盘的块大小,并对磁盘文件进行mmap.您没有指定您正在使用的编程语言,因此它可能像C中的强制转换一样简单,或者更复杂的东西,例如创建flyweight对象来包装java.nio.IntBuffer.无论哪种方式,B树的许多优点是你不必一次加载它,但可以相当有效地跳转它.