@VadimKnyzev

Как реализовать рекурсивное слияние деревьев?

Как можно выполнить рекурсивное слияние деревьев?

Деревья имеют вид:

$tree1 = new \ArrayObject(<br>
    array(<br>
        array('category' => \Shop\Model\Category, 'child' => \ArrayObject([*RECURSIVE*]))<br>
    )<br>
);<br>

\ArrayObject([*RECURSIVE*]) — ну здесь понятно что там может быть в свою очередь ещё один объект \ArrayObject с элементами аналогичной структуры.

Т.е. в данном случае нужно проверить при слиянии, что если категории совпадают, то нужно дальше идти по потомкам.
Что-то тут много действий, никак не могу сообразить, с чего начать.
Может есть какой-то типовой алгоритм?
  • Вопрос задан
  • 3292 просмотра
Пригласить эксперта
Ответы на вопрос 2
Комментировать
@egorinsk
Рекурсивные операции с деревом делаются проще всего рекурсивной функцией. У вас так вопрос описан, что ничего не понять, потому приведу пример функции, проходящей по дереву и умножающей каждый элемент на 2:

ideone.com/2zVf8C

То есть мы делаем функцию, обрабатывающей один массив, и если в нем есть подмассивы, просто вызываем эту же функцию для них. Этот же подход, мне кажется, прекрасно подойдет к вашйе задаче.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы