dfs可以使用堆栈实现,也可以使用递归的方式实现。利用堆栈的形式伪代码如下:
本文都是以走迷宫为例子
DFS:
将起点标记为已走过的点,并压栈;
while(栈不为空)
{
从栈顶弹出一个点P;
if(p是终点)
break;
否则沿上下左右四个方向探索
if(和P相邻的点有路可走,并且没有走过)
将相邻的点标记为已走过点,并且将改点压栈,改点的前驱就是P点
}
if (P是终点)
{
打印P店的坐标;
while(p有前驱)
{
P = P 的前驱;
打印P坐标;
}
else
没有路线走出迷宫
BFS则是使用队列的方式实现,能够找到最短的路径
将起点标记为已走过的点,并入队列;
while(队列不为空)
{
出队列一个点P;
if(p是终点)
break;
否则沿上下左右四个方向探索
if(和P相邻的点有路可走,并且没有走过)
将相邻的点标记为已走过点,并且将改点入队列,该点的前驱就是P点
}
if (P是终点)
{
打印P店的坐标;
while(p有前驱)
{
P = P 的前驱;
打印P坐标;
}
else
没有路线走出迷宫
原文:http://www.cnblogs.com/chenxf0619/p/4293328.html