Построение Tree дерева
Смысл такой в базе лежит дерево реализованное на списках смежности.
Нужно отстроить такое же дерево на странице и реализовать по нему поиск и быстрый доступ к нодам(узлам). Пока что есть две идеи: 1. Передавать дерево в виде: [{id:1, pid:0, child:1, title:'one 1'},{id:2, pid:1, child:0, title:'one 1.1'}] 2. Передавать дерево в виде: [{id:1, pid:0, title:'one 1', child:[{id:2, pid:1, child:0, title:'one 1.1'}]}] Мысли такие: В первом случае неясно пока как сделать дерево быстро и элегантно, зато поиск по дереву будет быстрый, в один цикл. Во втором случае гоним рекурсию и строим дерево, но поиск по нему получается сложнее. Склоняюсь пока к первому варианту, может у кого есть мысли по этому поводу. |
Дерево может быть на 10 000 узлов и выше. Конечно я пойду путем тестов и т.д. но если кто-то реализовывал подобное, то можно советовать. :)
|
Gozar,
интересует вопрос, какого рода будет поиск. Потому что при таком количестве узлов, мне кажется лучше реализовать загрузку уровня по ajax запросу. |
nikita.mmf
Загрузка уровня по ajax запросу это интересно, но это и так легко реализовать, ради такого случая я не стал бы создавать тему. |
Если вдруг кого заинтересует подобная темя, то я выбрал второй вариант, рисовать его проще.
|
Вот статья на эту тему
В итоге у тебя получится подобная структура: +--+-------+--------+-----+------+------- |id|name |parent |left |right |depth | +--+-------+--------+-----+------+------- Поясню: все элементы имеют идентификатор, родитель, соседние элементы (точки начала/конца нода), и уровень текущего нода. Т.о имея очень большую и глубокую структуру элементов, где используется интенсивный поиск, эффективней всего отталкиваться от элементов которые ближе всего находятся к искомому. |
Часовой пояс GMT +3, время: 15:14. |