DFS
广度优先一层一层遍历,每一层得到的所有新节点,要用队列存储起来以备下一层遍历的时候再遍历。
而深度优先遍历搜索在得到一个新节点时立即对新节点进行遍历;从节点0出发开始遍历,得到新节点6时,立马对新节点6进行遍历,得到新节点4;如此反复以这种方式遍历新节点,直到没有新节点了。此时返回。返回到根节点0的情况是,继续对根节点0进行遍历,得到新节点2,然后继续上述步骤。
从一个节点出发,使用DFS对一个图进行遍历时,能够遍历到的节点都是从初始节点可达的,DFS常用来求解这种可达性问题。
在程序实现DFS时需要考虑以下问题:
- 栈:用栈来保存当前节点的信息,当遍历新节点返回时能够继续遍历当前节点,可以使用递归栈。
- 标记:和BFS一样同样需要对已经遍历过的节点进行标记。