假设分别使用堆栈和队列实现深度优先搜索(DFS)和广度优先搜索(BFS)的图遍历。
是否会出现BFS和DFS遍历的顶点序列相同的情况?图表的属性会允许这种情况发生什么?
为简单起见,我们还假设这是一个稀疏图,我们的图表表示为邻接列表,如下所示:
For example:
0 -> 1
1 -> 2
2 -> 3 -> 4 -> 1
3 -> 2 -> 4
答案 0 :(得分:1)
BFS和DFS以相同顺序访问节点的最简单图形将是链表。由于链接列表只是每个深度只有一个节点的图形,因此两个算法将以相同的顺序访问节点,假设您从无链接列表的链接列表的一个端点开始,或者从节点开始对于有向图,indegree = 0。
答案 1 :(得分:0)
这仅适用于一些非常简单的图表。它们看起来都是这样的,其中root是您访问的第一个节点,遍历的顺序就像在图片上一样,从左到右。随意删除您想要的任何节点,我只绘制最复杂的结构。
作为一般规则,只有最右边的孩子才能拥有一个以上的孩子。但是你可以指向"返回"到之前在图表中访问过的任何节点。
r o o t
/ |... \
1st 2nd nth
\
node
\
...
\
node
/ |.. \
a b z
\
....