Ниже приведена реализация BFS и DFS, в которой я хочу распечатать путь вывода. Программа работает должным образом, но я также хочу распечатать путь, по которому найдена вершина.
def BFS(start: Vertex): List[List[Vertex]] = {
def BFS0(elems: List[Vertex], visited: List[List[Vertex]]): List[List[Vertex]] = {
val newNeighbors = elems.flatMap(g(_)).filterNot(visited.flatten.contains).distinct
if (newNeighbors.isEmpty)
visited
else
BFS0(newNeighbors, newNeighbors :: visited)
}
BFS0(List(start),List(List(start))).reverse
}
def DFS(start: Vertex): List[Vertex] = {
def DFS0(v: Vertex, visited: List[Vertex]): List[Vertex] = {
if (visited.contains(v))
visited
else {
val neighbours:List[Vertex] = g(v) filterNot visited.contains
neighbours.foldLeft(v :: visited)((b,a) => DFS0(a,b))
}
}
DFS0(start,List()).reverse
}
intGraph.BFS(1)
intGraph.BFS(2)
intGraph.DFS(3)