繁体   English   中英

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

[英]Would sequence of nodes visited by BFS and DFS ever be the same?

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

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

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

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

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

这仅适用于一些非常简单的图形。 它们都是这样的,其中root是你访问的第一个节点,遍历的顺序如图,从左到右。 随意删除您想要的任何节点,我只是尽可能绘制最复杂的结构。

作为一般规则,只有最右边的孩子才能拥有多个孩子。 但是您可以让链接“返回”到图中先前访问过的任何节点。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM