BFS:递归与迭代

时间:2018-03-07 20:27:41

标签: recursion tree iteration binary-tree breadth-first-search

以递归方式迭代地编写BFS树遍历算法是否有任何优势?在我看来迭代是要走的路,因为它可以在一个简单的循环中实现:

  1. 排队根节点
  2. 将节点出列并检查
  3. 将孩子排队
  4. 转到第2步
  5. 递归有什么好处吗?它似乎更复杂,没有任何优势。

    提前致谢...

1 个答案:

答案 0 :(得分:0)

在考虑算法时,我们主要考虑时间复杂度和空间复杂度。 迭代BFS的时间复杂度为O(| V | + | E |),其中| V |是顶点数,| E |是图中的边数。递归BFS也是如此。 并且迭代BFS的空间复杂度为O(| V |)。递归BFS也是如此。

从时间复杂度和空间复杂度的角度来看,这两种算法没有区别。由于迭代BFS易于理解,因此人们喜欢迭代BFS也就不足为奇了。