powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Решение построения дерева
4 сообщений из 4, страница 1 из 1
Решение построения дерева
    #34908468
startbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, подскажите как построить дерево из таблицы БД, содержащей структуру отделов предприятия. Неправильно делать структуру это дерева статической. А это значит что заранее знать сколько подразделений и к кому они будут привязаны(ихняя иерархия) невозможно. По какому пути топать, может у кого то были подобные задачи? Таблица одна, содежит такой формат (1-поле)идентификатор узла,
(2-поле)к кому привязан узел(ссылка на первое поле)
(3-поле)название узла.
...
Рейтинг: 0 / 0
Решение построения дерева
    #34908730
Олег Гапон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например

1. Перегоняешь данные из таблицы в плоскую структуру

2. Создаёшь метод поиска дочерных элементов по плоской структуре по заданому родителю.

3. Создаёшь из плоской структуры древовидную, используя метод (2), вытянув вначале все элементы в которых родитель = 0 (или -1 или NULL, всё зависит как они помечаются), тоесть элементы верхнего уровня. Дальше по рекурсии пошло ...поехало, тянем дочерные элементы у дочерных...до тех пор пока не затянем всё дерево.


Эта древовидная структура и будет моделью для дерева.

Дочерные элементы можно подгружать по требованию (динамически), тоесть когда запрашиваеться метод что типа getChildren(), тогда вообще можно без рекурсии

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  public  List getChildren() {
    if  (!loadChildren) {
      children = loadChildrenByParent(id);
      loadChildren = true;
   }
    return  children;
 }
...
Рейтинг: 0 / 0
Решение построения дерева
    #34908733
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
startbitНарод, подскажите как построить дерево из таблицы БД, содержащей структуру отделов предприятия. Неправильно делать структуру это дерева статической. А это значит что заранее знать сколько подразделений и к кому они будут привязаны(ихняя иерархия) невозможно. По какому пути топать, может у кого то были подобные задачи? Таблица одна, содежит такой формат (1-поле)идентификатор узла,
(2-поле)к кому привязан узел(ссылка на первое поле)
(3-поле)название узла.
Старая-старая задача. Простейшее решение "в лоб" - найти верхние узлы (с field1 is null), потом найти и присоединить к ним подчиненных, к тем - их подчиненных и т.д обычной рекурсией. А потом начинаются всякие оптимизации - использование СУБД-специфичных диалектов для быстрого и упорядоченного вытягивания иерархии, построение дерева "кусочками" (когда узлы строятся в процессе единственного прохода таблицы и постепенно привязываются друг к другу), формирование иерархии в другом формате (с обходом схемы слева направо). Всякого на эту тему понаписано море.
...
Рейтинг: 0 / 0
Решение построения дерева
    #34912437
startbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно примерчик подобной ситуации, что то я не въезжаю пока.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Решение построения дерева
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]