Allgemeines 21.967 Themen, 148.269 Beiträge

Gelöschte Postings, Antworten nicht nachvollziebar....

schnaffke / 17 Antworten / Flachansicht Nickles

Hallo alle zusammen, also was TW privat macht interessiert mich nicht, ich hab hier nur mal ne allgemeine Anregung. Also wenn ein Posting gelöscht wird (weswegen auch immer), es dazu aber Antworten gibt, dann versteht natürlich keiner mehr die Antwort (ist mir kürzlich passiert, ich hatte auf ein Posting geantwortet, am nächten Tag war das Posting weg, meine Antwort aber noch da). Lediglich ein schmaler grauer horizontaler Streifen oberhalb meiner Antwort deutet noch darauf hin, dass da mal ein Posting war. Wäre es nicht möglich, hier ein kurzes Statement abzugeben, z.B. Posting wurde gelöscht.


 Meine Antwort wurde so innerhalb der ganzen Diskussion dadurch jedenfalls ziemlich unverständlich und nicht nachvollziehbar.
Gruß Schnaffke



 

bei Antwort benachrichtigen
Kopfschütteln Tilo Nachdenklich
pco xafford „Ok, du hast also zwei IDs für eine verkettete Liste. Aber wie soll sich denn...“
Optionen

>ob die Rekursion nun das Script, oder die Datenbank macht ist egal.
Ich würde die Datenbank bevorzugen, da das laufzeitverhalten da besser st.

Was die Datenstruktur des B-Baumes angeht, denke ich du bist noch zu sehr bei Binärbäumen. Beim B-Baum kann jedes Tupel eines Nodes ein neues Tupel, als auch einen ganzen Node als Nachfolger haben.

Der Baum selber wird Rekursiv aufgebaut, das lässt sich kaum anders machen. Die Nodes jedoch werden Iterativ durchsucht.

Sprich mit deinem Beispiel
Du suchst mit Deienr Select-Anweisung alle Replys zu Thread 1.
Ergebnis ist

function rekursion(thread)
{
Replies = sql(SELECT * FROM threads WHERE thread.parentid='thread.id'); //ergebnis im Beispiel reply_1, reply_2

//Jetzt wirds iterativ
For each(Reply in Replies)
if (Reply.nextnode) //wir haben einen node als follow_up
set new newnode as reply; //Okay neuer Node
newnode.id = reply.nextnode; //Node.id muss nextnode des Vorgängers sein.
rekursion(reply)
else
show_reply(reply); //rekursionsabbruch
}

Dank dieser Funktion kann ich an jedem Punkt in den Thread springen...

Ich habe die Datenstruktur um einen "Nextnode" erweiter, dafür allerdings das Nextentity weglassen können.

Wichtig ist der Iterative abschnitt, welcher Speicher sparen kann, da Follow-Ups nicht als Teil der Rekursion, sondern als Sequenz gesehen werden. Der B-Baum ist in der lage zu Listen degenerierte Bäume mit dem Aufwand von exakt "n" abzuarbeiten.
Bedeutet: Ein Thread hat nur Follow_Ups ohne eigene Follow_Ups. In diesem Falle wird die Rekursion hier nur ein mal im Skript durchlaufen.

In Deinem Beispiel wächst die Komplexität sehr schnell, da Du mehrere Verschachtelte Abbruchbedingungen einbauen musst und in dem Falle Du wahrscheinlich durch die iterative Methode keinen Speicher sparst.

PCO

bei Antwort benachrichtigen