深度优先搜索的伪码描述:
void DFS( Vertex V ){
visited[ V ] = true;
for ( V的每个邻接点W ){
if( !visited[ W ] ){
DFS( W );
}
}
}
从点V进入,将点V标识为已访问,visited[ V ] = true。然后对于V的每一个邻接点,对于每一个邻接点W,递归的调用DFS。
对图的深度优先搜索算法,类似树的先序遍历。
若有N个顶点,E条边,时间复杂度是:
- 用邻接表存储图,有O(N+E)
- 用邻接矩阵存储图,有O(N^2)