Python - Tree-traversal Frage

Ich habe eine harte Zeit mit tree traversal, und so vermeiden Sie es wie die Pest... normalerweise.

Habe ich eine Klasse, die eine Art-von (leicht vereinfachte version hier, aber funktionell identisch) wie:

class Branch(object):
    def __init__(self, title, parent=None):
        self.title = title
        self.parent = parent

Ich habe ein Wörterbuch, eine Reihe von Branch Instanzen, die Titel der einzelnen wie die Tasten:

tree = {'Foo Branch': foo, 'Sub-Foo Branch': sub_foo, 'Bar Branch': bar}

Nun, ich weiß, dass es komplexe algorithmen für die Herstellung traversal-Effizienz (z.B. MPTT, et al), insbesondere für den Einsatz mit Datenbank-getriebene Projekte, bei denen Effizienz die meisten Fragen. Ich bin nicht mit der Datenbank überhaupt, nur einfache in-memory-Objekte.

Angesichts der title einer Branch, die ich brauche, um eine list alle Nachfahren dieses Zweiges (Kinder, Kinder, Kinder, so-an) von tree so:

  1. Würden Sie immer noch empfohlen, mit einer komplizierten (für meinen algo-weniger Gehirn 🙂 Algorithmus wie MPTT für die Effizienz in meinem Fall, oder gibt es eine einfache Möglichkeit, dies zu erreichen in einer einzigen Funktion?
  2. Wenn ja, welche würden Sie empfehlen, zu wissen, ich bin nicht mit einer Datenbank?
  3. Können Sie ein Beispiel geben, oder ist dies viel größer als ich denke?

Hinweis: Dies ist keine Hausaufgabe. Ich bin nicht in der Schule. Ich bin wirklich nur das schlechte an algorithmen. Ich habe Django-MPTT für ein Projekt die benötigten DB-stored-Bäume... aber immer noch nicht, verstehen es sehr gut.

Wenn ich denke, ich werde sagen, dass die Antwort liegt in der Rekursion.

InformationsquelleAutor orokusaki | 2011-06-06

Schreibe einen Kommentar