DFS
(1)在代码一中,所有的点只走一遍,适合后面的路径与前面无关的情况,比如找(1,1)到(n,m)的最短路径,如果之前走到过(x1,y1),说明(x1,y1)往后没有路能走到(n,m),此时再搜索到(x1,y1)时就没必要再走一遍了
(2)在代码二中,会搜索从起点开始的所有情况,走过的点在回退时会消除标记,适合要搜索所有情况,比如找(1,1)到(n,m)的所有路径
BFS
(1)在代码一中,点进入队列时就将其标记
(2)在代码二中,点从队列取出时才标记,如果在这之前其他点再次访问到了已经在队列中的点,就会导致重复入队,会增加不必要的计算