Сам алгоритм написан на го:
type Graph struct {
Vertices map[int]*Vertex
directed bool
}
type Vertex struct {
Key int
Vertices map[int]*Vertex
}
func DFS(g *Graph, startVertex *Vertex) {
visited := map[int]bool{}
if startVertex == nil {
return
}
visited[startVertex.Key] = true
for _, v := range startVertex.Vertices {
if visited[v.Key] {
continue
}
DFS(g, v)
}
}
Сообственно вопрос в заголовке. ЯП не важен хотел бы понять суть. Нужно создать массив успешно пройденных сегментов до нужной вершины.
Например, нужно найти все маршруты от A до F
граф:
A ---- B ----- C
| \ |
D ---- F
Результат:
{
"0": ["a", "f"],
"1": ["a", "b", "f"],
"2": ["a", "d", "f"]
}