У меня есть дерево объектов, где у каждого объекта есть std::vector
указателей на его потомков. Класс объекта имеет метод rewrite()
, который применяется рекурсивно для изменения объекта и его дочерних элементов, обычно со следующими преобразованиями, где [N]
- это перезаписываемый объект, а (M)
- это элемент, который возвращает rewrite()
. :
(A)
[A] / \ [A]
/ \ --> B X | --> (B)
B C \ B
C
Какой самый простой способ расширить эту настройку, чтобы разрешить подобные преобразования?
A X
| / \
[B] --> C A
| |
C (Y)
То есть те, которые заново внедряют дерево, перемещают элемент, вставляют новый элемент и возвращают вставленный элемент. Мне трудно придумать что-то хорошее, что также требует минимального рефакторинга. Мысли?