如何从BFS方法获取输出

时间:2019-10-26 09:43:26

标签: scala graph

以下是我要打印输出路径的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)

0 个答案:

没有答案