不完全是僞代碼,但它應該工作
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編輯傳入 –