2014-10-23 2 views
0

Я нахожу много статей о b-дереве, но ни один из них не помог мне.Хранение B-дерева в файле

Я хочу сохранить B-дерево на диске, но я не хочу сериализовать древовидный объект, я думаю, что есть способ сохранить только значения дерева в некотором порядке, после того как я смогу восстановить дерево снова.

Я попытался хранить значения в некоторых порядках, например, предварительный заказ, порядок ввода (симметричный), пост-порядок, но когда значения вставляются снова, дерево изменяется.

Ниже приведен пример дерева b, которое я хочу сохранить.

B-tree example

Изображение из http://slady.net/java/bt/view.php, B-Tree анимация апплет.

Итак, существует способ сохранить структуру дерева с его значениями.

+0

Это длинный выстрел, но, возможно, попробуйте и посмотрите здесь? https://github.com/jankotek/MapDB/tree/master/src/main/java/org/mapdb – shlomi33

+0

Я посмотрю сейчас, спасибо –

ответ

0

Вы правы, что B-деревья не предназначены для сериализации в целом. Они в порядке как структура данных в памяти, но наиболее полезны в качестве структуры данных на диске, где память может быть разной (возможно, только один узел в памяти за раз).

Для примера Java-кода с использованием B-дерева на диске и подмножества узлов, кэшированных в памяти, см. Исходный код JDBM, одно место для запуска может быть https://github.com/jankotek/JDBM3/blob/master/src/main/java/org/apache/jdbm/BTreeNode.java#L831.

+0

Этот алгоритм сложный, может быть, ответ есть, но я не вижу. Вы могли бы объяснить основной способ хранения b-древовидной структуры? Мне не нужно лазить несколько узлов, я хочу только сохранить дерево в файле и восстановить дерево одинаково после. –

Смежные вопросы