C#: Vermeiden Sie eine unendliche Rekursion bei der Traversierung graph-Objekt

Habe ich ein graph-Objekt, wobei jedes child-Objekt enthält eine Eigenschaft, die verweist zurück auf seine Eltern. Gibt es gute Strategien für das ignorieren der parent-Verweise um zu vermeiden, dass eine unendliche Rekursion? Ich habe gedacht, hinzufügen von einem speziellen [Parent] - Attribut, um diese Eigenschaften oder Verwendung eine Besondere Namenskonvention, aber vielleicht gibt es einen besseren Weg.

  • Ich glaube nicht, dass ein Eltern/Kind-Beziehung inhärent führt zu einer unendlichen Rekursion. Es wäre hilfreich, wenn Sie zeigte den code, der das problem verursacht.
  • wenn Sie bi-direktional Schiffbarkeit auf der Eltern-Kind-Beziehung (Sie können navigieren Sie die Beziehung in beide Richtungen), dann hast du infintite Rekursion. Das Elternteil hat eine Eigenschaft, die führt zu das Kind hat eine Eigenschaft, die führt zurück zu den Eltern, die eine Eigenschaft aufweist, führt zu dem Kind, die hat eine Eigenschaft.... etc etc
  • Levine: ich bin sicher, Sie werden Zustimmen, dass, ob oder nicht, die eine parent/child-Beziehung wird zu einer unendlichen Rekursion führen, hängt von der Art und Weise, die Sie durchqueren das Objekt graph.
  • Auch ohne parent-Zeiger, gibt es ein problem. Könnte es Zyklen im Graphen, die nicht mit den Eltern. Eine gute graph-traversal Algorithmus berücksichtigt die Fälle.
  • fairer Punkt. Ich denke, was ich sagte, ist wahr, wenn Sie einen naiven "oben beginnen und befolgen Sie alle Referenzen" - Ansatz, aber ist nicht unbedingt wahr.
InformationsquelleAutor nw. | 2010-02-05
Schreibe einen Kommentar