BFS和DFS访问的节点序列是否相同?

时间:2015-11-14 13:47:22

标签: algorithm graph graph-algorithm

假设分别使用堆栈和队列实现深度优先搜索(DFS)和广度优先搜索(BFS)的图遍历。

是否会出现BFS和DFS遍历的顶点序列相同的情况?图表的属性会允许这种情况发生什么?

为简单起见,我们还假设这是一个稀疏图,我们的图表表示为邻接列表,如下所示:

For example: 
0 -> 1
1 -> 2
2 -> 3 -> 4 -> 1
3 -> 2 -> 4

2 个答案:

答案 0 :(得分:1)

BFS和DFS以相同顺序访问节点的最简单图形将是链表。由于链接列表只是每个深度只有一个节点的图形,因此两个算法将以相同的顺序访问节点,假设您从无链接列表的链接列表的一个端点开始,或者从节点开始对于有向图,indegree = 0。

答案 1 :(得分:0)

这仅适用于一些非常简单的图表。它们看起来都是这样的,其中root是您访问的第一个节点,遍历的顺序就像在图片上一样,从左到右。随意删除您想要的任何节点,我只绘制最复杂的结构。

作为一般规则,只有最右边的孩子才能拥有一个以上的孩子。但是你可以指向"返回"到之前在图表中访问过的任何节点。

  r o o t
 /  |... \ 
1st 2nd  nth
          \
          node
            \
            ...
              \
              node
             / |.. \
            a  b    z
                     \
                    ....