【发布时间】:2021-06-24 15:24:18
【问题描述】:
我在这里查看了其他答案,但所有内容要么写得乱七八糟,要么代码的运行方式与我的不同。我正在寻找的是一个非常清晰的解释,说明为什么下面描述的这种广度优先搜索的时间复杂度是 O(v + e)。
class Node {
constructor(name) {
this.name = name;
this.children = [];
}
breadthFirstSearch() {
const array = []
const queue = [this]
while(queue.length) {
const node = queue.shift()
array.push(node.name)
queue.push(...node.children)
}
return array
}
}
下面的每个顶点都是上面描述的每个节点类。你可以想象breadthFirstSearch方法被“A”节点调用。
A
/ | \
B C D
/ \ / \
E F G H
/ \
I J
我理解 O(v) 部分,因为很清楚我们访问了每个节点。 O(e) 部分是我无法绕开的部分。提前致谢。
【问题讨论】:
-
您是否对在树上进行 BFS 的情况特别感兴趣?或者这是关于一般的图表?
-
只是您在此处看到的树的类型。大部分平衡的简单树。
标签: tree computer-science breadth-first-search traversal