直观上,由于我们在大多数实现中使用递归(即利用隐式堆栈数据结构)来应用DFS算法,它们感觉相同。在大多数情况下(或全部情况下),结果与先序遍历相同。DFS的思想是选择一个分支并深入探索,完全探索它。而选择分支并向下走的方式取决于你正在实现哪种DFS。仅为完成而言,在BFS算法中,我们按层遍历。记住,先序遍历只是DFS的一种类型。我们还有其他方法,如下所示。 图片来源:Base CS 为了更好的理解,请参考这篇博客或者甚至是这篇。
这可能取决于深度优先算法的定义和实现。Java Swing的JTree组件的DefaultMutableTreeNode类具有以下用于树遍历的枚举方法: depthFirstEnumeration() postorderEnumeration() preorderEnumeration() breadthFirstEnumeration() 在Java Swing的实现中,depthFirstEnumeration与postOrderEnumeration相同。我的测试和官方文档证实了这一点。 其他人可以以不同的方式定义深度优先。例如,维基百科上的一篇文章指出,前序遍历和后序遍历是深度优先遍历的特定类型。这意味着深度优先遍历不是一种具体的遍历算法。