Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Построение Tree дерева (https://javascript.ru/forum/misc/26268-postroenie-tree-dereva.html)

Gozar 02.03.2012 17:54

Построение 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'}]}]


Мысли такие:
В первом случае неясно пока как сделать дерево быстро и элегантно, зато поиск по дереву будет быстрый, в один цикл.

Во втором случае гоним рекурсию и строим дерево, но поиск по нему получается сложнее.

Склоняюсь пока к первому варианту, может у кого есть мысли по этому поводу.

Gozar 02.03.2012 18:04

Дерево может быть на 10 000 узлов и выше. Конечно я пойду путем тестов и т.д. но если кто-то реализовывал подобное, то можно советовать. :)

nikita.mmf 02.03.2012 18:14

Gozar,
интересует вопрос, какого рода будет поиск. Потому что при таком количестве узлов, мне кажется лучше реализовать загрузку уровня по ajax запросу.

Gozar 02.03.2012 18:17

nikita.mmf
Загрузка уровня по ajax запросу это интересно, но это и так легко реализовать, ради такого случая я не стал бы создавать тему.

Gozar 02.03.2012 19:24

Если вдруг кого заинтересует подобная темя, то я выбрал второй вариант, рисовать его проще.

monolithed 02.03.2012 19:26

Вот статья на эту тему
В итоге у тебя получится подобная структура:
+--+-------+--------+-----+------+-------
|id|name   |parent  |left |right |depth |
+--+-------+--------+-----+------+-------


Поясню: все элементы имеют идентификатор, родитель, соседние элементы (точки начала/конца нода), и уровень текущего нода. Т.о имея очень большую и глубокую структуру элементов, где используется интенсивный поиск, эффективней всего отталкиваться от элементов которые ближе всего находятся к искомому.


Часовой пояс GMT +3, время: 15:14.