I'm looking for some algorithm which will help me find all possible ways in the graph. Everything that I have found so far is not completely satisfactory.
Suppose we have a graph (tree) like this:

And let me use some algorithm, such as Width and First Search or Depth Search . In return, we get something like
1, 2, 4, (2), 5, (2), 6, (2), (1), 3, 7, 8, (7), 9
This is how we go through this tree, and this is not what I am looking for. I would like to get all the paths, for example:
1
1, 2
1, 2, 4
1, 2, 5
1, 2, 6
1, 3
1, 3, 7
1, 3, 7, 8
1, 3, 7, 9
The thing is, I just want to specify rootnode, and the algorithm should be able to provide me with all possible paths of any length.
So far, the simple code I had looks like this:
func dfs(_ graph: Graph, source: Node) -> [String] {
var nodesExplored = [source.label]
source.visited = true
for edge in source.neighbors {
if !edge.neighbor.visited {
nodesExplored += dfs(graph, source: edge.neighbor)
}
}
return nodesExplored
}