在 Node.js 中实现广度优先搜索(BFS)算法可以使用 JavaScript 编写。以下是一个示例代码,展示如何在 Node.js 环境中实现 BFS 算法:
class Graph {
constructor(vertices) {
this.vertices = vertices;
this.adjList = new Map();
}
addVertex(v) {
this.adjList.set(v, []);
}
addEdge(v, w) {
this.adjList.get(v).push(w);
}
bfs(startingNode) {
let visited = {};
let queue = [];
// 标记起始节点为已访问并入队
visited[startingNode] = true;
queue.push(startingNode);
while (queue.length > 0) {
// 从队列中取出一个节点
let currentNode = queue.shift();
console.log(currentNode);
// 获取该节点的所有邻接节点
let adjNodes = this.adjList.get(currentNode);
for (let i in adjNodes) {
let adjNode = adjNodes[i];
if (!visited[adjNode]) {
visited[adjNode] = true;
queue.push(adjNode);
}
}
}
}
}
// 使用示例
let g = new Graph(6);
let vertices = ['A', 'B', 'C', 'D', 'E', 'F'];
for (let i = 0; i < vertices.length; i++) {
g.addVertex(vertices[i]);
}
g.addEdge('A', 'B');
g.addEdge('A', 'C');
g.addEdge('B', 'D');
g.addEdge('B', 'E');
g.addEdge('C', 'F');
console.log("广度优先搜索的遍历顺序 (从顶点 A 开始):");
g.bfs('A');
在这个示例中:
Graph
类表示一个图,使用一个Map
对象来存储邻接表。addVertex
方法用于向图中添加顶点。addEdge
方法用于向图中添加边。bfs
方法实现广度优先搜索算法,打印出从起始节点开始的遍历顺序。- 在使用示例中,创建一个包含 6 个顶点的图,并添加了一些边。然后从顶点 A 开始执行 BFS 算法,输出遍历顺序。
你可以根据需要调整图的结构和起始节点,以测试不同的图和起始点。