在进行遍历时了解图中的排序

时间:2015-03-23 04:24:30

标签: data-structures

我试图在图形的上下文中理解深度优先和广度优先遍历。我见过的大多数视觉例子都使用树来说明两者之间的差异。树中节点的排序比图中的节点要简单得多(至少对我而言),并且完全可以理解节点将从根节点从上到下,从左到右排序。

在处理图表时,我看不到这种自然顺序。我已经看到了一个标有A到F的各种节点的例子,其中作者解释了节点的遍历,假设它们的标签有词汇顺序。这似乎意味着节点所代表的值的类型必须具有内在的可比性。是这样的吗?任何澄清都将非常感谢!

1 个答案:

答案 0 :(得分:2)

图表中的节点值无法进行比较。

考虑BFS与DFS的直观/过度简化的方法是:

  • 在DFS中,你选择一个移动的方向,然后你尽可能地向那个方向走,直到你走到死路。然后你尽可能少地回溯,直到找到你可以进入的不同方向。跟着它到达终点,然后再回溯,依此类推。

  • 在BFS中,您可以按顺序在每个可能的方向上执行一步。然后在每个可能的方向上采取两个步骤,依此类推。

考虑下面的简单图表(我故意选择不是A,B,C的标签......以避免标签的排序很重要):

Q  -->  X  --> T

|       |
|       |
v       v

K  -->  W

从Q开始的DFS可能会像这样继续:Q到X到W(死角),回溯到X,转到T(死角),回溯到X然后回到Q,转到K(死胡同以来W已被访问过。)

从Q开始的BFS可以这样进行:Q,然后是X(距离Q一步),然后是K(距离Q一步),然后是W(距离Q两步),然后是T(两步)远离Q)。