n叉树中BFS的复杂度
Complexity of BFS in n-ary tree
我正在寻找在 O(n) 中对 n 叉树进行 BFS 的算法,我找到了以下算法,但是我在分析时间复杂度时遇到了问题。
我不确定它是 O(n) 还是 O(n^2)。
有人可以解释时间复杂度或给出替代算法,其中 运行 in 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算法。如果你定义为in-ary tree,那么时间复杂度与那个无关。
但是,如果 表示树中的节点总数,则时间复杂度为 O(),因为每个节点恰好入队一次,恰好出队一次。由于队列操作是O(1),所以时间复杂度是O()。
我正在寻找在 O(n) 中对 n 叉树进行 BFS 的算法,我找到了以下算法,但是我在分析时间复杂度时遇到了问题。 我不确定它是 O(n) 还是 O(n^2)。 有人可以解释时间复杂度或给出替代算法,其中 运行 in 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算法。如果你定义为in-ary tree,那么时间复杂度与那个无关。
但是,如果 表示树中的节点总数,则时间复杂度为 O(),因为每个节点恰好入队一次,恰好出队一次。由于队列操作是O(1),所以时间复杂度是O()。