我们可以在没有着色的情况下进行图形bfs和dfs吗?

时间:2013-04-10 03:03:58

标签: graph depth-first-search breadth-first-search

我知道怎么做DFS和BFS与图节点有一些属性,如颜色,所以在DFS或BFS的过程中,我可以判断一个节点是否已被访问过。 我想知道如果给出图形并且图形节点没有颜色标记,我该如何进行DFS或BFS?

非常感谢!

1 个答案:

答案 0 :(得分:0)

是的,可以在不使用三种颜色的情况下进行DFS,您可以在“节点”类中保留一个布尔属性,以查看它是否曾被访问过:

  void DFS-Visit(Node current , int time){
      current.visited = true;
      for (int i = 0 ; i < current.neighbor.length ; i++)
          if (!current.neighbor[i].visited)
              DFS-Visit(current.neighbor[i]);
      System.out.println(current.key);
      return;
  }
  void DFS(Node[] G){
       for (int i = 0 ; i < G.length; i++)
           G[i].visited = false;
       for (int i = 0 ; i < G.length; i++)
           if (!G[i].visited)
              DFS-Visit(G[i]);
       return;
  }
  class Node{
     Node[] neighbor;
     boolean visited;
     int key; // content of the node , it might be anything
  }