Помогите пожалуйста с алгоритмом.
Имеется файл состоящий из отдельных блоков. Пример блоков:
[b]1 0 obj[/b]
...............
endobj
[b]2 0 obj[/b]
.................
endobj
[b]3 0 obj[/b]
................
endobjВсе эти блоки находятся в зависимости по типу древовидной структуры - есть рутовый обьект, который обязательно содержит потомков, эти потомки могут также содержать потомков(до бесконечности) или же быть конечными обьектами. Необходимо вычислить конечные обьекты. Для того, чтобы не гонять файл туда сюда, при входе в программу он считывается в ассоциативный массив(размер массива зависит от того какой файл будет загружен, чаще всего не более 3-4мб).
Пример зависимости:
4 o obj
/kids [1 0 obj.....]
endobj
1 0 obj
/kids [4 0 obj, 5 0 obj .....]
endobj
4 0 obj
---конечный--
endobj
5 0 obj
--конечный
endobjВижу два выхода;
1. Попытаться это загнать в Qt древовидную модель QTreeModel, далее забрать необходимые элементы ну и тд...
2. Используя рекурсию(боюсь я раньше состарюсь чем ее сделаю) комплектовать ассоциативный массив конечных обьектов дальше все просто...
Какой из этих подходов более безболезненный или же есть другой выход ? Оба этих метода имеют огромные затраты оперативной памяти, при их реализации столкнусь с огромным количеством проблем.


