递归深度优先搜索算法 - 一般情况/基本情况/初始情况是什么?

时间:2013-05-01 12:11:52

标签: java recursion graph depth-first-search

根据我的推理,基本情况是访问了图表上的所有节点。

一般情况是标记所有相邻边。

最初的情况是选择单个节点作为起点。

这是对的吗?可能的答案如下:

一个。 “发现”了一个未经访问过的节点。 B.标记所有相邻边缘。 C.已访问图表上的所有边缘。 D.已访问图表上的所有节点。 E.选择单个节点作为起点。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

Depth-First-Search-Kickoff( Maze m )
    Depth-First-Search( m.StartCell )
End procedure

Depth-First-Search( MazeCell c )
    If c is the goal
        Exit
    Else
        Mark c "Visit In Progress"
        Foreach neighbor n of c
            If n "Unvisited"
                Depth-First-Search( n )
        Mark c "Visited"
End procedure

http://www.cs.washington.edu/education/courses/cse326/03su/homework/hw3/dfs.html
您需要使用memoization来标记节点。

如果你没有使用递归,你可以使用队列实现dfs并检查队列是否为空。