Algorithmus für Tree Traversal

8

Aktualisierung:
Ich fand eher ein Beispiel für das, was ich zu erreichen versuche: Hierarchische Daten in MySQL verwalten . Ich möchte das aber in JavaScript machen, weil ich eine App entwickle, die Kommentare aufnimmt, die in einer hierarchischen Struktur sind, um genauer reddit.com zu sein. Wenn Sie die Pretty JSON-Erweiterung in Ihrem Chrome-Webbrowser haben, gehen Sie zu reddit und klicken Sie auf einen Thread-Kommentar und fügen Sie dann .json zur URL hinzu, um zu sehen, was ich analysiere.
Ich bekomme die JSON-Daten ganz gut, es parst einfach durch die Kommentare und fügt den entsprechenden HTML-Code hinzu, um zu zeigen, dass es verschachtelt ist.
Ideen für Lösungen?

ALTE Frage:
Ich arbeite an einem Programm und ich bin an einen Teil gekommen, den ich brauche, um die Logik herauszufinden, bevor ich den Code schreibe. Ich nehme Daten ein, die in einem Baumformat sind, aber mit der Möglichkeit von mehreren Kindern für jeden Elternknoten und die einzigen Bäume, auf denen ich Daten zu finden scheint, sind Bäume mit Gewichten oder Bäumen, wo jeder Knoten höchstens zwei Kindknoten hat. Also versuche ich den Algorithmus herauszufinden, um jeden Knoten eines Baumes wie folgt zu bewerten:

%Vor%

Wenn ich jetzt schreibe, wie mein Algorithmus funktionieren würde, schreibe ich am Ende verschachtelt für / while-Schleifen, aber ich schreibe eine Schleife für jede Ebene der Höhe des Baumes, die für dynamische Daten und Baume unbekannter Höhe mit unbekannte Anzahl von Kindern pro Knoten funktioniert das nicht. Ich weiß, dass ich irgendwann gelernt habe, einen Baum wie diesen zu durchqueren, aber im Moment entkommt er mir völlig. Weiß jemand, wie das in Schleifen gemacht wird?

    
HuXu7 27.01.2011, 17:27
quelle

4 Antworten

15

Wenn Sie keine Rekursion verwenden möchten, benötigen Sie eine zusätzliche Datenstruktur. Eine Warteschlange bietet Ihnen eine Breite-zuerst-Traversierung, während ein Stapel Ihnen eine Tiefe-zuerst-Traversierung gibt. So oder so ähnlich sieht es aus:

%Vor%

Wikipedia-Verweise

Mark Peters 27.01.2011, 17:33
quelle
8

Verwenden Sie Rekursion, nicht Schleifen.
Breite erste Suche
Tiefe erste Suche
Diese sollten Ihnen helfen, mit dem zu beginnen, was Sie erreichen möchten.

    
Jean-Bernard Pellerin 27.01.2011 17:31
quelle
1

Verwenden Sie Rekursion wie

%Vor%     
Elalfer 27.01.2011 17:31
quelle
1

Der einfachste Code für die meisten Baumdurchquerungen ist normalerweise rekursiv. Bei einer Mehrwege-Struktur wie der Ihren ist es normalerweise am einfachsten, eine Schleife zu haben, die jeden Zeiger auf ein Kind betrachtet und sich selbst mit diesem Knoten als Argument für alle Kind-Knoten aufruft.

    
Jerry Coffin 27.01.2011 17:33
quelle

Tags und Links