一尘不染

广度优先和深度优先的树遍历的时间和空间复杂度是多少?

algorithm

有人可以举例说明如何计算这两种遍历方法的时间和空间复杂度吗?

此外,深度优先遍历的递归解决方案如何影响时间和空间复杂度?


阅读 1164

收藏
2020-07-28

共1个答案

一尘不染

BFS:

时间复杂度为O(|V|),其中|V|为节点数。您需要遍历所有节点。
空间复杂度也是O(|V|)如此-因为在最坏的情况下,您需要将所有顶点保持在队列中。

DFS:

时间复杂度又来了O(|V|),您需要遍历所有节点。
空间复杂度-取决于实现,递归实现可能具有O(h)空间复杂度(最坏的情况),其中h树的最大深度。
在堆栈上使用迭代解决方案实际上与BFS相同,只是使用堆栈而不是队列-这样您会同时增加O(|V|)时间和空间复杂度。

(*)请注意,树的空间复杂度和时间复杂度与一般图略有不同,因为您不需要维护visited树的集合,并且|E| = O(|V|),因此该|E|因素实际上是多余的。

2020-07-28