【发布时间】:2017-10-29 05:58:36
【问题描述】:
当我使用 BFS 遍历具有 n 个节点的树(不一定是二叉树)时,我试图了解时间复杂度。 根据我的理解,它应该是 O(n^2),因为我的外循环运行了 n 次,即直到队列不为空并且树包含 n 个节点。 我的内部 for 循环必须不断地将与特定节点关联的子节点添加到队列中。 (每个节点都有一个包含所有子节点地址的字典) 因此,例如,如果根节点有 n-1 个节点(因此所有这些节点都没有进一步的子节点),那么时间复杂度不会是 n*(n-1) = O(n^2)。
我的理解正确吗? 有什么办法可以在 O(n) 中完成吗?请解释一下。
【问题讨论】:
标签: c++ algorithm time tree breadth-first-search