| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Деревья |
| Автор: Forpost 1.7.2012, 16:42 |
| Здравствуйте. Уважаемые коллеги, подскажите, пожалуйста, решение задачи. Необходимо создать взвешенное дерево(т.е. каждая связь будет есть свой вес=числовое значение). Необходимо иметь возможность добавлять наследника, указав номер родителя. |
| Автор: Forpost 4.7.2012, 09:35 |
| Появилась следующая идея реализации: Создаём два массива: 1. Двумерный массив, первый индекс которого отвечает за уровень вложенности; второй индекс отвечает за те элементы, которые находятся на текущем уровне. 2. Двумерный массив отношений. $relations[parent's_index][son's_index]=вес связи. Однако, как при такой структуре получить массив всех элементов, которые входят в поддерево родителя K? К может быть и корнем дерева, и листьями, и любым другим значением. |
| Автор: Fortop 4.7.2012, 15:26 |
| А чем дерево отличается от списка? |
| Автор: aleks2020 4.7.2012, 15:29 |
| Одного массива хватит, если не ошибаюсь. |
| Автор: Forpost 5.7.2012, 08:13 | ||||
Может быть и хватит. Только я не нашел решение с одним массивом.
Тем что у одного родителя может быть несколько потомков. |
| Автор: Fortop 5.7.2012, 12:02 |
Хорошо. А чем дерево отличается от списка списков списков списков .... и т.д.? |
| Автор: MaXL 9.7.2012, 07:11 |
| Forpost, вес может быть нулевым ? что вам мешает написать http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%B2_%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D1%83 или http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83, начиная с выбранной вершины ? |