Wie erkennt und verhindert man Zyklen in einem Stammbaum in C++?
Hallo zusammen! Ich schreibe ein Programm zur Erstellung eines Stammbaums in C++. Ich bin auf ein ernstes Problem gestoßen: Beim Hinzufügen von Verwandtschaftsbeziehungen kann der Benutzer versehentlich einen Zyklus erzeugen. Zum Beispiel angeben, dass der Großvater der Enkel seines eigenen Enkels ist. Das Programm hängt sich auf oder stürzt mit segmentation fault ab, wenn versucht wird, den Baum zu durchlaufen.\n\nMeine Datenstruktur sieht so aus:\n\n```cpp\nstruct Person {\n string name;\n vector parents;\n vector children;\n};\n```\n\nIch füge eine "Eltern-Kind"-Beziehung etwa so hinzu:\n\n```cpp\nvoid addParentChild(Person* parent, Person* child) {\n parent->children.push_back(child);\n child->parents.push_back(parent);\n}\n```\n\nDer Benutzer gibt Daten in beliebiger Reihenfolge ein, und ich kann nicht garantieren, dass kein Zyklus entsteht. Zum Beispiel
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen