不完全是伪代码,但它应该工作
define node: {int id}
define edge: {node a , b ; int weight (default=1)}
define listNeighbours:
input: node n
output: list of neighbours
define dfs:
input: list nodes, list edges, node start, node end
output: list path
bool visited[length(nodes)]
fill(visited , false)
list stack
add(stack , start)
visited[start.id] = true
while ! isEmpty(stack)
node c = first(stack)
if c.id == end.id
return stack
list neighbours = listNeighbours(c)
bool allVisited = true
node next
for node n in neighbours
if visited[n.id]
continue
else
allVisited = false
next = n
if allVisited
pop(stack)
else
push(stack , next)
return null
注:节点的ID始终< =图中的节点总数和独特的图形
请选择您的尝试之一并在此发布。然后我们可以一起调试它:-) – Kevin
你的问题有点令人困惑,因为它似乎认为是作品“喜欢它应该”,但也“从未真正有效100%”。也许你期望的一个小例子,以及你实际得到的东西在这里会有所帮助。 – gilleain
ops编辑传入 –