我知道BFS需要O(n + m)时间,其中n是节点,m是弧。
在做BFS的同时构建树怎么样?
只要在更糟糕的情况下树完全不平衡,它是否会增加另一个n?
答案 0 :(得分:3)
不完全确定我关注但是如果通过:
是否增加了另一个
您的意思是复杂性为O(n+m+n)
,请注意O(n+m+n) = O(n+m)
,因此这里没有真正的问题。
树的构建可以在O(n+m)
中完成,因为它可以表示为数组a[1,...,n]
,其中a[i] = j if and only if node i is connected to node j in the tree
(以及根的特殊标记)
因此,在BFS期间,当节点v
“发现”节点u
时,您只需要执行a[u]=v
,这是在恒定时间内完成的,并且完全完成{{ 1}}次,因此总复杂度仍为n