我不需要代码,只需要解释。我的教科书说
级别顺序:级别i的每个节点在级别i + 1
的任何节点之前处理
我对广度优先搜索的理解是你从左边开始首先探索离根最近的节点?这有什么不同?这是一个正方形和矩形的情况吗?
答案 0 :(得分:17)
对于“正确的”树(见下文),它是相同的,至少大多数定义。与Wikipedia类似,例如:
广度优先
另见:广度优先搜索
树也可以在级别顺序,...
中遍历...广度优先(水平顺序)遍历......
嗯,至少水平顺序遍历与广度优先遍历相同。遍历某些东西有很多理由,它不仅仅是搜索,因为广度优先搜索似乎意味着,尽管许多(或大多数)没有做出这种区分并使用术语可互换。
我个人真正使用“级别顺序遍历”的唯一一次是在谈论in-, post- and pre-order traversals时,只是遵循相同的“......顺序遍历”格式。
对于一般图形,“级别”的概念可能格式不正确(尽管可能只是将其定义为距离源节点的(最短)距离,我想),因此,水平顺序遍历可能没有明确定义,但广度优先搜索仍然是完全合理的。
我在上面提到了一个“正确的”树(这是一个完全由子组成的分类,以防你想知道) - 这只是意味着“水平”定义为你所期望的 - 每个边缘将水平提高一个。然而,人们可能能够稍微使用“级别”的定义(尽管这可能不被广泛接受),实质上允许边跳过级别(或者甚至在同一级别上的节点之间具有边缘)。例如:
level
1 1
/ \
2 / 3
/ /
3 2 4
因此,水平顺序遍历为1, 3, 2, 4
,
而广度优先遍历将是1, 2, 3, 4
。
答案 1 :(得分:0)
我们对树使用级别顺序遍历,因为在树中没有循环,并且一旦访问了节点,就不会再次访问 但在图形中却并非如此。 图也可以是循环的 如果图是循环的,则按照访问节点的级别顺序,它不会检查是否访问过它,并且它将无限次遍历同一节点。并且程序将由于循环而继续遍历。 因此,在使用图形的情况下,我们使用BFS或DFS。
答案 2 :(得分:0)
广度优先搜索和层序遍历有什么区别?
定义:“有序树的级别顺序是从上到下的顶点列表,左- 该树的标准平面图从右到右的顺序”。
请记住,当我们讨论级别顺序时,我们只讨论树,而不是一般的图。
我们可以更具体地说明我们正在讨论Rooted-Trees。
定义:“有根树是一棵树,其指定的顶点称为根。每条边都被认为是远离根的。因此,有根的树是一棵有向树,其根的入度 = 0(因此没有传入边)”。
*区分很重要,因为它的这个属性允许树的递归实现。
此外,层序遍历对图没有意义(树是图的一种特定类型(无环且连通))。
因此,对于我们使用 BFS 的图,我们用于树的 BFS 被称为“级别顺序遍历”(因为既然我们在谈论有根树,那么级别确实有意义。而在图中他们不会感觉,因为没有根)
结论:层序遍历是对特定图结构的情况的广度优先搜索:Tree(特别是Rooted-Trees)