【问题标题】:BFS: recursive vs iterativeBFS:递归与迭代
【发布时间】:2018-08-16 01:42:18
【问题描述】:

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

  1. 排队根节点
  2. 出列节点并检查
  3. 将其子项排入队列
  4. 转到第 2 步

递归有什么好处吗?它似乎更复杂,没有优势。

提前谢谢...

【问题讨论】:

  • process is not the same as procedure – 递归 procedures 不一定产生递归 process
  • 您似乎已经回答了自己的问题:“它似乎更复杂,没有优势”。我也没有看到任何优势,而且我看到的所有实现都是基于队列的。
  • 你将如何在递归中实现它?递归只是场景后面的堆栈,BFS 是队列。如果没有一些魔法,我认为这是不可能的

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-04-26
    • 2012-08-29
    • 2021-05-26
    • 1970-01-01
    • 2015-07-18
    • 2015-02-06
    • 2011-02-08
    • 2018-12-28
    • 2012-10-05
    相关资源
    最近更新 更多