Ah okay. Also da es ja bei Dir wie ein Binärbaum aussieht, würde ich gar nicht zu einem Baum tendieren, sondern diesen linear ablegen ( Binärbaum ), damit kannst Du die Positionen der Blätter direkt anspringen und ggf ändern. Falls es eben kein Binärbaum ist, kannst Du Dir während der Traversierung Pointer auf die Knoten / Blätter speichern, so dass Du eben bei einem Fehler alle bisher durchlaufenen Knoten / Blätter direkt verändern kannst.
In C++ würde ich eben einen std::vector<node*> anlegen und bei jedem durchlaufen des Knotens diesen des Vectors hinzufügen, wenn ein Fehler auftritt kann man dann diese Liste durchlaufen und verarbeiten. Letzteres würde auch mit einer beliebigen Art eines Baumes funktionieren, erfordert aber halt eine zusätzliche Datenstruktur, die so viele Elemente enthält, wie es Knoten im Baum gibt, wenn der Baum vollständig / ohne Fehler aufgebaut wird