微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

n 叉树中 BFS 的复杂性

如何解决n 叉树中 BFS 的复杂性

我正在寻找在 O(n) 中为 n 元树执行 BFS 的算法,我找到了以下算法,但是我在分析时间复杂度时遇到了问题。 我不确定它是 O(n) 还是 O(n^2)。 有人可以解释时间复杂度或给出在 O(n) 中运行的替代算法

谢谢

breadthFirstSearch = (root,output = []) => {
  if (!root) return output;
  const q = new Queue();
  q.enqueue(root);
  while (!q.isEmpty()) {

    const node = q.dequeue();
    
    output.push(node.val);
    
    for (let child of node.children) {
      q.enqueue(child);
    }
  }
  return output;
};

解决方法

这确实是通用树的 BFS 算法。如果你将?定义为?-ary树中的?,那么时间复杂度与那个?无关。

然而,如果 ? 代表树中节点的总数,那么时间复杂度是 O(?) 因为每个节点只进队一次,出队一次。由于队列操作是 O(1),所以时间复杂度是 O(?)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。