广度优先搜索遍历 VS 前序遍历 VS 深度优先搜索遍历

Breadth First Search Traversal VS Pre-order Traversal VS Depth First Search Traversal

对于二叉树,广度优先遍历(BFS)和前序遍历一样吗?我对这两种不同类型的遍历有点困惑。任何人都可以向我解释一下吗?此外,预序遍历深度优先搜索遍历(DFS)相比如何?

非常感谢!

不,pre-order遍历实际上是Depth-First-Search(DFS)遍历的一种形式。 DFS一共有三种不同的形式,分别是:

  1. Pre-Order
  2. In-Order
  3. Post-Order

为了证明 Breadth-First-Search (BFS) 遍历与 pre-order 遍历不同 我将在下面展示一个反例:

需要明确的是,二叉树与二叉搜索树不同,即二叉树可以定义为:

二叉树 - 元素最多有2个children的树称为二叉树。请注意,没有提及 children.

的顺序

好的,现在counter-example,采用下面的简单二叉树:

对于 pre-order 遍历,按以下顺序访问节点: Pre-Order: [1,2,4,3]

现在 Breadth-First-Search 遍历节点按以下顺序访问:

BFS: [1,2,3,4]

注:pre-order遍历与BFS遍历不同

有关不同树遍历的更多信息,请查看此 link

希望对您有所帮助!

DFS 类型为 pre-order 、in-order 和 post-order;

DFS 就像 - 先去找我的后代 (grand-grand-..child) 然后我会看到我的兄弟姐妹后代。 BFS 就像 - 首先是我的兄弟姐妹,然后是他们的 child 然后是他们的 child 等等。

pre-order图遍历一般使用DFS技术

in-order只在二叉树中遍历。(树是一种特殊的图)

BFS是树的情况下的层序遍历

这四种是不同的遍历技术,结果也是 不同的。 有时它们的结果可能相同,所以不要混淆,检查不同的树,你会发现不同之处。