深度优先搜索
void dfs(int x,int y) {
if(达到出口||无法继续) //相当于判断边界
{ 相应操作; return; } if(对应x方向的下一步可以继续) { 添加标记;
dfs(x+1,y);//调用递归 取消标记;
}
else if(对应y方向的下一步可以继续){
添加标记;
dfs(x,y+1); 取消标记;
}
}广度优先搜索
void BFS(图)
{
for(所有顶点)
{
若该顶点未被访问
{
bfs(该顶点);
}
}
}
bfs(某个顶点)指的是从某个顶点开始进行广度优先搜索遍历。
bfs(某个顶点)
{
初始化一个队列queue并将这个顶点放入队列;
while(队列不为空)
{
访问队头顶点s;
标记s为已遍历;
出队
遍历p的所有邻接顶点
{
若该顶点没被访问过,入队;
}
}
}
模板 28: 深度优先和广度优先搜素的伪代码
最新推荐文章于 2025-05-09 13:19:11 发布