Ich muss iterieren einen Baum/Grafik iterieren und eine bestimmte Ausgabe zu erzeugen, aber einige Regeln folgende:Wie diesen Baum/Graph
_ d
// \
b c _e
/ /|
a f g
Die erwartete ausgegeben werden soll (um irrelevant):
{'bde', 'bcde', 'abde', 'abcde', 'bdfe', 'bdfge', 'abdfe', ...}
die Regeln sind:
- die Spitze des Baumes 'bde' (leftmost_root_children + root + rightmost_root_children) immer vorhanden sein sollten
- Die Reihenfolge von links nach rechts sollte beibehalten werden, z. B. sind die Kombinationen "cb" oder "gf" nicht zulässig.
- Alle Pfade folgen der Richtung von links nach rechts.
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 stellt meinen Baum sehr eng:
class N():
"""Node"""
def __init__(self, name, lefts, rights):
self.name = name
self.lefts = lefts
self.rights = rights
tree = N('d', [N('b', [N('a', [], [])], []), N('c', [], [])],
[N('e', [N('f', [], []), N('g', [], [])],
[])])
oder besser lesbar sein:
N('d', lefts =[N('b', lefts=[N('a', [], [])], rights=[]), N('c', [], [])],
rights=[N('e', lefts=[N('f', [], []), N('g', [], [])], rights=[])])
Zeigen Sie, was Sie versucht haben! – ovgolovin
um ehrlich zu sein, ich weiß nicht, wie ich anfangen soll. Ich dachte an eine doppelte for-Schleife, aber ich fühle irgendwie, dass ich eine Rekursion machen muss. Ich kann einfach nicht alles zusammensetzen. –
gibt es keinen direkten Weg zwischen d und f/g oder b und c.es ist wirklich schwer, die Logik aufzudecken (warum und wann man von d nach g springt, dann zu f und zurück zu e) hinter den erwarteten Ausgaben. – marmeladze