多语言展示
当前在线:1119今日阅读:168今日分享:49

DFS-深度优先遍历

I 算法简介以下图作为事例进行深度优先遍历的过程说明:从根节点开始遍历,首先访问节点2,由于2也有孩子节点,依次继续访问5,假设5为叶子节点,因此返回到节点2,再访问6,至此2号节点全部访问完成,返回至根节点并开始访问3号节点。深度优先算法通过递归实现,通常的模式为:void 递归(){ …….//判断递归程序是否完成的一些列代码,通过Return返回 for(inti=0;i 4 || Hj > 5)//跑出迷宫之外 return; if(Hi == 4 && Hj == 5)//到达门口 { escape = true; return; } intsi,sj; for(int i = 0; i < 4; i++) { si=Hi+way[i,0];//上下左右移动 sj=Hj+way[i,1]; if(si < 0 || sj < 0 || si > 4 || sj > 5)//产出边界 continue; if (Map[si,sj] != "Wall")//可通行 { Map[si, sj] = "Wall";//设为墙 path[++p, 0] = si;//记录遍历过的地图位置的当前坐标 path[p, 1] = sj; DFS(si,sj); if(escape) return; Map[si, sj] = "";//恢复现场 p--;//将该位置从路径中删除 } } return; }程序实现结果:
推荐信息