【问题标题】:Why is the space complexity of depth-first search not expressed as O(n)?为什么深度优先搜索的空间复杂度不表示为 O(n)?
【发布时间】:2019-11-01 15:40:03
【问题描述】:

算法相对较新,所以如果我遗漏了一些明显的东西,请原谅!

我知道深度优先搜索的空间复杂度通常表示为 O(h),其中 h 是树的高度,而广度优先搜索的复杂度是 O(n),其中 n 是数字树中的节点数。

我理解解释(例如在这个答案https://stackoverflow.com/a/9844323/10083571 中),在 BFS 中最坏的情况下,所有节点都在一个级别上,这意味着我们必须在遍历它们之前将所有节点排队。我也明白树的空间复杂度将取决于它的高度,因为这将决定堆栈上需要存储的最大层数。

我不明白的是,为什么这也不表示为 O(n)。根据与 BFS 最坏情况类似的推理,DFS 最坏情况不是所有节点都在一个单一的沿袭之下吗?所以在最坏的情况下,树的高度将等于它拥有的节点数。那么为什么这也不表示为 O(n) 呢?

谢谢

【问题讨论】:

    标签: algorithm depth-first-search breadth-first-search


    【解决方案1】:

    是的,但这并不是真正的树,它是一个链表。 Big-O 是抽象的;当它声称一棵树的搜索是 lg(n) 时,这意味着对于一棵适当平衡的树,而不是一棵病态构造的树。

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      相关资源
      最近更新 更多