ich habe mit Hilfe des Tiefensuche_Algorithmus eine Funktion geschrieben, mit der man kontrollieren kann, ob ein Graph schleifenfrei ist.
Die Suche an sich funktioniert gut.
Problem habe ich mit dem return Befehl(tut nicht was ich erwarte).
ich rufe die funktion so :
print dfs(net, 1, 34, stack) # erwarte z.B 1 als ausgabe , bekomme aber None
was mache ich falsch ?
Code: Alles auswählen
def dfs(net, node , goal, stack):
#pdb.set_trace()
c.nodes[node].visited+= 1
if node == goal :
return 1
if c.nodes[node].visited == 2 :
return 8
else:
for edge in c.nodes[node].edge :
n1 = c.edges[edge].node1.index
n2 = c.edges[edge].node2.index
if n1 != node and c.nodes[n1].visited == 0 :
stack.append(n1)
continue
elif n2 != node and c.nodes[n2].visited == 0 :
stack.append(n2)
if len(stack)!=0 :
no = stack.pop()
dfs (net, no , goal, stack)
else :
return 0