Pull to refresh
61
Сергей Томулевич@phoinixrw

Архитектор

28
Subscribers
Send message
Моя хорошая знакомая ответила на третий вопрос в своём блоге. она редактор астрологического ресурса. Но её нет на Хабре, что в общем-то не так плохо, не испортится человек :)
А вот ссылка: planeta.rambler.ru/users/astrologica/119969792.html
А слона то я и не заметил.
В следующий раз.
Еще один…
Вы разницу между Materialized Path и Adjacency List замечаете?
Ага, представь какие апдейты по таблице будут при перемещении и вставки узлов.
Лучше уж тогда Nested Sets.
Ну вот, начался кодосрач.
Сколько говорить, что я в своих статьях не навязываю никому свою идею, а только предлагаю альтернативу.
Вы когда в ресторан приходите тоже официанту и повару канифолите мозги по поводу того, что они готовят блюда которые вам не нравятся и предлагают вам его в меню? Наверно нет, вы спокойно выбираете то, что вам по вкусу и кушаете на здоровье.
Во первых — не боимся, а она нам не нравится;
Во вторых — мы знаем, какие грабли могут быть при использовании рекурсий;
В третьих — мы стараемся делать приложения которые работают быстрее;
В четвертых — Perl тут не при чем, на нем только реализация алгоритма.
Вот вот, который все равно рекурсивно прийдется обрабатывать.
В том то и дело, что сруктуру еще нужно обойти, опять же рекурсивно.
Возвращаемся к нашим «баранам», твой алгоритм обходит дерево, но никак не выстраивает его в нужном порядке.
А у меня список, который просто:

foreach my $row (@result) {
print $row->{id}, "\t", $row->{pid}, "\t", $row->{ord}, "\t", $row->{level}, "\t", $row->{data}, "\n"
}

И вот тебе готовое дерево нарисовано.
Вот как раз этот алгоритм строит готовый отсортированный массив
Какая у тебя структура массива в результате обработки получается?
Вопрос в том, что у тебя получается хеш списков, а у меня уже один отсортированный список.
Я не сказал, что не люблю, я сказал, что она мне не нравится.
N количество запросов к базе;
Вероятность зацикливания;
Еще с областью видимости переменных больше тонкостей.
Ну да, конечно, и рекурсия вообще не нужна бы была совсем.
Для начала, попробуйте с таким алгоритмом построить дерево.
Кстати, обход графа и его построение — это немного разные вещи.
Вот по этому алгоритму я вижу, что выберутся сначала все дочерние узлы корня, потом дочерние узлы дочерних узлов, и т.д.

Нерабочий у вас алгоритм.
Можно поподробней?
Особенно, в части поддерева, не рекурсивно.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Chief Technology Officer (CTO), Database Developer
Lead
Nginx
Perl
FreeBSD
Creating project architecture
PostgreSQL