Baum rekursiv durchlaufen
Verfasst: Mittwoch 31. August 2022, 15:26
Hallo,
als Python-Neuling versuche ich mich gerade an einer rekursiven Funktion zum Durchlaufen eines Baumes:
Ich habe einen Baum aus Objekten der selben Klasse. Jeder Knoten des Baumes kann keine oder beliebig viele Unterknoten aufweisen.
Diesen Baum möchte ich als CSV exportieren. Dazu muss ich jedes "Blatt" (Knoten ohne Kinder) einmal besuchen, den Weg dorthin mitschreiben und diesen dann als Zeile in die Datei abspeichern.
Beispiel:
Mein bisheriger Lösungsansatz
funktioniert leider nicht. Ich würde das Problem gerne auf "Python-Art" lösen. Habt ihr einen Tipp für mich?
Viele Grüße
als Python-Neuling versuche ich mich gerade an einer rekursiven Funktion zum Durchlaufen eines Baumes:
Ich habe einen Baum aus Objekten der selben Klasse. Jeder Knoten des Baumes kann keine oder beliebig viele Unterknoten aufweisen.
Diesen Baum möchte ich als CSV exportieren. Dazu muss ich jedes "Blatt" (Knoten ohne Kinder) einmal besuchen, den Weg dorthin mitschreiben und diesen dann als Zeile in die Datei abspeichern.
Beispiel:
Code: Alles auswählen
# Baum:
# +--B
# !
# A--+
# ! +--D
# ! !
# +--C--E
# !
# +--F
#
# CSV:
# A
# A, B
# A, C
# A, C, D
# A, C, E
# A. C, F
#
# Python:
class obj:
def __init__(self, name, children=[]):
self.name=name
self.children=children
tree=obj("A",[obj("B",[obj("D"),obj("E"),obj("F")]),obj("C")])
Code: Alles auswählen
def nextchild(obj):
print("call for ",obj.name)
if (obj.children):
print(" got child")
for child in obj.children:
print (" name: ",child.name)
return nextchild(child)
else:
print(" last child")
nextchild(tree)
Viele Grüße