Ich muss einen Baum / Graphen durchlaufen und eine bestimmte Ausgabe erzeugen, aber einige Regeln beachten:
%Vor%Die erwartete Ausgabe sollte (Reihenfolge nicht relevant) sein:
%Vor%Die Regeln lauten:
Ich muss alle Pfade finden, die diesen Regeln folgen. Leider habe ich keinen CS Hintergrund und mein Kopf explodiert. Jeder Tipp wird hilfreich sein.
EDIT: Diese Struktur repräsentiert meinen Baum sehr genau:
%Vor%oder besser lesbar:
%Vor% Dies kann also als eine Kombination von zwei Problemen behandelt werden. Im folgenden Code wird davon ausgegangen, dass die N
-Klasse und die tree
-Struktur bereits in Ihrer Problembeschreibung definiert wurden.
Erstens: Bei einer Baumstruktur wie Ihrer, wie erzeugen Sie eine In-Order-Traversierung seiner Knoten? Das ist ein ziemlich einfaches Problem, also zeige ich einfach einen einfachen rekursiven Generator, der es löst:
%Vor% Zweitens: Jetzt, da wir die "richtige" Reihenfolge der Knoten haben, müssen wir als nächstes alle möglichen Kombinationen von diesen herausfinden, die a) diese Reihenfolge beibehalten, und b) enthalten die drei "Anker" -Elemente ( 'b', 'd', 'e'
). Dies können wir mit Hilfe der immer nützlichen itertools
Bibliothek erreichen.
Die grundlegenden Schritte sind:
Wie so:
%Vor%