Всем доброго дня, столкнулся с проблемой выбора структуры данных и файла для хранения N-дерева.
Обьект, по факту из себя представляет из себя следующее:
class Node{
int data;
Node[] childArray;
}
Вот и столкнулся с проблемами:
a) Такая структура, как обьект в памяти, при количестве узлов от ~10^6, потребляет изрядно памяти ОЗУ. При переделке обьекта на примитивы и работы уже с массивом данных со смещениями, проблема решается и память не так сильно кушается(примерно раза в 3-5). т/е/ что-то подобное:
int node = 0b1111111111_00000000_11111111;
// 1ые 8 бит отвечают за данные
// 2ые 8 бит child_size
// 3ие 8 бит информируют о необходимом смещении в массиве, чтобы дойти к следующему элементу на текущем уровне
б) Запись дерева в файл. При сохранении обьекта в XML / JSON на выходе получаем весьма весомый файл от 50мб при N=~10^6. При создании собственного велосипеда и переделки дерева на линейную запись в файле, получаем весьма удвлтворительный вариант с 6-8мб на выходе, но появляется проблема с масштабируемостью. Т/е/ для добавления произвольного узла в дерева, следует пройтись по всем узлам для коррекции смещений узлов в файле и перезаписать. Существуют ли непрожорливые форматы данных для хранения N-нарного дерева с возможностью масштабирования?