如何解决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 举报,一经查实,本站将立刻删除。