[Python-de] graph ausgeben
Frank Immich
frankimmich at gmx.de
Die Okt 21 23:15:33 CEST 2003
Hallo zusammen,
ich kämpfe immer noch mit Graphen...
Das untenstehende Beispiel ist klar, aber ich würde jetzt gerne nur
alle Kinder von z.b. "A" auflisten. Ich besuche ja jeden Ast, aber es muss
doch funktionieren, nur in die Pfade zu gehen, die man noch nicht besucht
hat ?
Kann mir jemand einen Tipp geben ?
Danke und
Grüße Frank
import string, sys, re, time, os, pickle
graph = {'A': ['B', 'C'],
'B': ['D', 'D'],
'C': ['F', "E"],
'D': ['F'],
'V': ['F'],
'I': ['Z'],
'E': ['T', 'V'],
'Z': ['Y', 'X'],
'F': ['G','R','I']}
def get_path(graph, root ,path=[]):
global depth
path = path + [root]
if not graph.has_key(root):
return None
children = graph[root]
for child in children:
print " |"*depth,child
if child not in mylist:mylist.append(child)
if child not in path:
depth += 1
newpath = get_path(graph, child, path)
depth -= 1
if newpath:return newpath
return None
if __name__ == '__main__':
depth = 0
mylist = []
get_path(graph, "A")
print [ x for x in mylist ]