Ich nehme an, dass Sie parallel meinen, dass alle Knoten eines Tiefenlevels vor einem niedrigeren Tiefenlevel berechnet werden müssen, d. H. Dass Sie sich nicht um mehrere Threads kümmern.
Die Standardmethode zum Ausführen einer Operation an den Knoten eines Binärbaums besteht in der Verwendung einer rekursiven Funktion. In diesem Fall müssen Sie jedoch die Tiefenstufe verfolgen, um zu wissen, ob Sie die Aufgabe ausführen dürfen.
Sie könnten eine Liste von Aufgaben verwenden, die in der richtigen Reihenfolge ausgeführt werden: Sie gehen durch Ihren Baum und hängen die Knoten an die Aufgabenliste an. Diese Liste ist nach der Tiefe der Knoten sortiert. Am Ende wenden Sie Ihre Operation auf jeden Knoten der sortierten Liste in der angegebenen Reihenfolge an.
def fill_list(node, depth):
list.add_in_sorted_list(node, depth)
if(node.has_left_child())
fill_list(node.left_child, depth+1)
if(node.has_right_child())
fill_list(node.right_child, depth+1)
Dann gelten Sie für alle Knoten der Liste Quadrat().
(dies ist Pseudocode. Komplexität O (n^2), aber Sie können O erhalten (n log n), wenn Sie eine bessere Struktur verwenden, um die sortierten Aufgaben, wie zum Beispiel eines anderen binären Baum zu handhaben)
Nicht, dass dies nicht funktioniert, wenn Sie Informationen von den untergeordneten Knoten benötigen, um die Operation auf dem aktuellen Knoten auszuführen.
BEARBEITEN: Die Komplexität ist tatsächlich O (n): Wenn Sie den aktuellen Knoten hinzufügen, bevor Sie die Funktion auf dem untergeordneten Knoten aufrufen, stellen Sie sicher, dass die aktuelle Tiefe niedriger ist als alle zukünftigen. Daher können Sie immer den Knoten an der Vorderseite der Liste hinzufügen, der O (1) kostet.
Dies ist nicht der Fall, wenn Sie die Funktion auf den untergeordneten Knoten aufgerufen haben, bevor Sie den aktuellen Knoten zur Liste hinzugefügt haben.
Ja, es ist möglich.Aber ich bin mir sicher, dass Sie nicht danach suchen. Bitte formulieren Sie die Frage um, um zu unterstreichen, was Sie wissen möchten. – Sorin
Ich möchte diese parallel laufende Funktion auf die Baumstruktur – pheno
anwenden und? Was hält dich auf? – Sorin