- 广度优先BFS是队列,一般求 最短距离、所有路径 用广搜。
- 深度优先DFS是栈,一般求能不能到达用深搜
图
- 判断以邻接表方式存储的有向图中是否存在由顶点Vi到Vj的路径。
算法思想:判断图中从Vi到Vj是否有路径,可以采取遍历的方法。遍历的起点为Vi,在一次BFS退出之前遇到Vj,则证明有路径,否则没有路径。
- 在有向图G中,如果结点r到G中的每个结点都有路径可达,则称结点r为G的根节点。编写一个算法判断有向图G是否有根,若有,则打印出所有根节点的值。
算法思想:判断顶点r到G中的每个顶点是否有路径可达,可以通过深度优先搜索遍历的方法。以r为起点进行深度优先搜索遍历,若dfs()函数退出之前已经访问过所有顶点,则r为根。
要打印出所有的根节点,可以对图中每个顶点都调用一次dfs(),如果是根则打印。
参考: