Finden Sie die maximale Tiefe des Baumes
Ich habe eine Baumstruktur mit N first-level child-Knoten, die Kinder auch.
Beispiel:
- Root
- Node1
- Node11
- Node111
- Node1111
- Node12
- Node2
- Node21
- Node211
Ich würde gerne wissen, welche von den Fächern hat die größte Tiefe. Wie im vorherigen Beispiel wird es
Node1 - Node11 - Node111 - Node1111
dass hat eine Tiefe von vier Ebenen.
Jede Anregung?
Dank!
- Ist dieses Hausaufgaben?
- Was meinst du mit Hausaufgaben?
- Sie weiß, was Hausaufgabe ist, richtig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie alle Knoten. Vor einigen Monaten habe ich implementiert diesen Algorithmus in dieser Weise:
Beispiel testen:
Ausgabe der Konsole:
Die einfachste ist ein brute-force-Algorithmus die zählt jeder Weg, speichert Zeiger auf alle die Knoten, und misst die Tiefe. Für jeden Pfad, die länger als einen letzten Weg, vergessen Sie alle anderen Wege, und erinnere nur an den längsten.
Traverse den Baum depth-first oder breadth-first, ist die Zuweisung an jeden Knoten seine Tiefe. Denken Sie daran, die Knoten mit der höchsten Tiefe.
Navigieren recusrivle wieder von diesem Knoten zur Wurzel. Dies gibt Ihnen die lngest Zweig. Möglicherweise gibt es mehr als eine Verzweigung mit der gleichen Länge.
Wenn Sie irgendeine form von iterator über Ihren Baum können Sie dann eine vollkommen Banale Herangehensweise an die max Tiefe.
Hier dumme one-liner zeigt das Konzept für die Suche nach maximal erreichbare Dateisystem Tiefe mit UNIX
find
,awk
undtr
:...
find
ist der iteratortr
ist ein Daten-manipulation "übersetzen" einen Satz von Zeichen in eine andere (in diesem Fall ist es verwendet wird, um -d (delete) das Komplement (- ) c) der single-Zeichensatz angegeben wird (/). Also es wandelt UNIX-vollständigen Pfad in der /Separatoren. Von dort find ich nur die längste Zeile der Eingabe ... und das ist mein Ergebnis.Natürlich dieser Ansatz wird nicht viel helfen, mit Ihren Hausaufgaben. Aber das Konzept sollte klar sein. 🙂