Алгоритм построения дерева из ТЗ

1. olo_lo4 23.10.12 23:10 Сейчас в теме
Собственно появилась недавно необходимость получить из внешнего источника данные и отображать их в виде дерева, для редактирования и дальнейшей загрузки в справочник. Внешний источник имеет следующую структуру данных:
КодРодителя|КодЭлемента|ПризнакГруппы|Наименование и т.д.
КодРодителя это элемент из этой же таблицы. Вот приблизительно пример:
2|3|0|GeForce GTX560
0|1|1|Видеокарты
1|2|1|Видеокарты NVIDIA
и тд.
Помню на js делал методом вложенных массивов и хэш-таблицы, кода было строк на 10 максимум и работало весьма шустро. С деревом же так не выйдет, так как строки его переподчинить нельзя:(. Попытки написать более менее нормальный алгоритм успехом не увенчались. Выходит какой-то дикий костыль. Может у кого-то уже есть наработки в данной области?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. romansun 194 24.10.12 00:25 Сейчас в теме
эм... вообще, обычно скидывается ТЗ в запрос, пишутся "ИТОГИ ПО", и ДЗ = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам); Это не то?

Если группировочных полей для итогов нет, можно так:

делается в ТЗ колонка-ключ (уровень дерева), по которой после формирования ТЗ производится сортировка. Отсортировать ТЗ надо таким образом, чтобы при его обходе впоследствии можно было строить дерево сверху вниз, т.к., да, в ДЗ поменять родителя нельзя.

Зато родителя можно поменять в иерархическом справочнике предварительно просто пролив туда ТЗ... ;) Хотя это уже не так красиво, как с сортировкой ТЗ.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот