Unterschiede zwischen Baumstrukturen erkennen

Dies ist eher eine CS-Frage, aber eine interessante :

Sagen wir, wir haben 2 Baum-Strukturen mit mehr oder weniger den gleichen Knoten neu geordnet. Wie würden Sie das finden

  1. alle
  2. in gewissem Sinne minimal

Reihenfolge der Operationen

  • MOVE(A, B) - bewegt sich Ein Knoten unter Knoten B (mit der kompletten Unterstruktur)
  • INSERT(N, B) - fügt eine neue Knoten N unter dem Knoten B
  • DELETE (A) - löscht den Knoten A (den gesamten Teilbaum)

verwandelt sich ein Baum an den anderen.

Es könnte natürlich Fälle geben, in denen eine solche transformation nicht möglich ist, trivial root A mit Kind B, root B mit Kind etc.). In solchen Fällen würde der Algorithmus einfach liefern ein Ergebnis "nicht möglich".

Sogar noch mehr spektakuläre version ist eine Verallgemeinerung für Netzwerke, d.h. wenn wir davon ausgehen, dass ein Knoten mehrmals vorkommen kann in der Struktur (effektiv mit mehreren "Eltern"), während die Zyklen sind verboten.

Disclaimer : Dies ist nicht Hausaufgaben, eigentlich kommt es von einem echten business-problem und ich fand es ziemlich interessant, Frage mich, ob jemand weiß vielleicht eine Lösung.

InformationsquelleAutor der Frage Tomas Vana | 2011-05-05

Schreibe einen Kommentar