深度优先搜索 (Depth First Search, DFS):


void DFS ( Vertex V )

    { visited[ V ] = true;

      for ( V 点 的每个邻接点 W )

           if ( !visited[ W ] )

                DFS( W );

    }


若有N 个顶点、E 条边,时间复杂度是

  1. 用邻接表存储图,有O(N+E)

  2. 用邻接矩阵存储图,有O(N 2 )



广度优先搜索 (Breadth First Search, BFS)


void BFS ( Vertex V )

    { visited[V] = true;

        Enqueue(V, Q);

        while(!IsEmpty(Q)){

        V = Dequeue(Q);

        for ( V 点 的每个邻接点 W )

            if ( !visited[W] ) {

                visited[W] = true;

                Enqueue(W, Q);

            }

        }

    }


若有N 个顶点、E 条边,时间复杂度是

  1. 用邻接表存储图,有O(N+E)

  2. 用邻接矩阵存储图,有O(N 2 )