Как можно выполнить рекурсивное слияние деревьев?
Деревья имеют вид:
$tree1 = new \ArrayObject(<br>
array(<br>
array('category' => \Shop\Model\Category, 'child' => \ArrayObject([*RECURSIVE*]))<br>
)<br>
);<br>
\ArrayObject([*RECURSIVE*]) — ну здесь понятно что там может быть в свою очередь ещё один объект \ArrayObject с элементами аналогичной структуры.
Т.е. в данном случае нужно проверить при слиянии, что если категории совпадают, то нужно дальше идти по потомкам.
Что-то тут много действий, никак не могу сообразить, с чего начать.
Может есть какой-то типовой алгоритм?