|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Grandalf Gray 2:5020/400 23 Feb 2002 18:11:54 To : ‘ҐаЈҐ© „ў®ап楢 Subject : Re: Построение дерева -------------------------------------------------------------------------------- > > 1. сортируешь массив по parent(по возрастанию) > > 2. берешь первый эл-т массива(у него parent=index) это будет твой root > > 3. берешь следующий эл-т ищешь в дереве родительский узел(index которого > > равен parent данного эл-та), добавляешь к найденному эл-ту > > потомка(рассматриваемый эл-т) > > 4. переходишь к 3 пока не дойдешь до конца массива... > > > У меня сейчас работает нечто наподобии (цикл в цикле - в самомо страшном > случае дает N*N итераций) Откуда столько??? И для чего вложенные циклы, не проще все это делать через рекурсивные функции (которые можно потом преобразовать в итерации+стек) бедет гораздо проще писать...(да и код будет более читабельным...) > Hу очень долго, даже при сортировке. Исходные данные беру из базы данных и > строю структуру (здесь сортировка не проблема). Если данные берутся из БД, то зачем нужен массив описанный в первом письме? не проще брать данные сразу с рекорсета, к тому же тут можно сразу получить отсортированный рекорсет( это будет гораздо быстрее чем потом это делать ручками...) > Есть еще HО - Рут у меня не один, а много (типа TreeView списка). на сколько я помню курс дискетной математики у дерева может быть всего 1 корень...(это вершина у которой нет предков, но есть потомки...:-) иначе это одновершинное дерево) если же у тебя несколько деревьев, то можно создать "виртуальний корень" сыновьями которого будут корни поддеревьев(т.е. объединить все это в одно дерево)... это будет удобно при последующей визуализации... > Компонент типа TDBTreeView строит все довольно быстро, но я в исходниках не > смог понять алгоритм. кстати описанный компонент строит дерево, а не "TreeView списка", и на сколько я помню он весь завязан на BDE... > Такая структура мне нужна для визуализации данных и в выборе логики > программы я весьма ограничен. А какая визуализация требуется, и в чем сложность в ее реализации??? > Да и сама проблема стоит того, чтобы ее решение затем использовать в других > задачах. COM? --- ifmail v.2.15dev5 * Origin: Golden Telecom (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/899028c69bfd.html, оценка из 5, голосов 10
|