Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.08.2015, 20:58

C# Baum durchlaufen

Hallo liebe Leuts^^,

Ich habe ein Problem, welches ich einfach nicht gelöst bekomme :/

Ich möchte gern einen Verzweigten Baum durchlaufen: (siehe Baumstruktur)

Wurzelobjekt -----------> KindObjekt---------------> Kind_KindObjekt-------------------------> Kind_Kind_KindObjekt

Hier mein Code:

C#-Quelltext

1
2
3
private static IEnumerable<ChildNode> GetCurrentNode(GeneralTree<object> root)         {               foreach (ChildNode node in root.ChildNodes)               {      yield return node;               }         }
public static Call(object o){   var tree = GetTree(o); // hier wird der eben genannte Baum erstellt      foreach(var node in GetCurrentNode(tree)   {   //... mach was mit node   }
]


Ich würde gerne, rekursiv den Baum durchlaufen und jeden Knoten zurückgeben und (egal was) mit diesen zurückgegeben Werten machen, aber er gibt mir nur einen Knoten zurück, ok das verstehe ich ja, aber wenn ich dann rekursive die Funktion aufrufe, wird die Funktion nicht nochmal aufgerufen, ich weiß einfach nicht was ich falsch mache .... ?( ?(

Wäre super dankbar für eure Unterstützung :)

Mfg

JP

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

2

28.08.2015, 21:23

Bitte formatiere deinen Code richtig.
Du musst einfach die Methode selbst rekursiv aufrufen.

C#-Quelltext

1
2
3
4
5
6
7
8
9
private static IEnumerable<ChildNode> GetCurrentNode(GeneralTree<object> root) //Komischer Name
//die Methode hat bisher auch nichts weiter gemacht,
//als eine Auflistung als Auflistung zurückzugeben.
{
     yield return this; //Den Node selbst zurückgeben
     foreach (ChildNode ChildNode in root.ChildNodes)
          foreach (ChildNode ReturnNode in GetCurrentNode(ChildNode)) //Die Methode auf alle Kindknoten ausführen.
              yield return ReturnNode ; //Die Ergebnisse zurückgeben
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (30.08.2015, 12:19)


3

28.08.2015, 22:02

danke Dir!!! ernsthaft, ich habe es auch jetzt verstanden :)

Werbeanzeige