【发布时间】: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