NodeJs语言实现广度优先搜索(Breadth-First Search,BFS)算法

在 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');


在这个示例中:

  1. Graph 类表示一个图,使用一个 Map 对象来存储邻接表。
  2. addVertex 方法用于向图中添加顶点。
  3. addEdge 方法用于向图中添加边。
  4. bfs 方法实现广度优先搜索算法,打印出从起始节点开始的遍历顺序。
  5. 在使用示例中,创建一个包含 6 个顶点的图,并添加了一些边。然后从顶点 A 开始执行 BFS 算法,输出遍历顺序。

你可以根据需要调整图的结构和起始节点,以测试不同的图和起始点。

在 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');


在这个示例中:

  1. Graph 类表示一个图,使用一个 Map 对象来存储邻接表。
  2. addVertex 方法用于向图中添加顶点。
  3. addEdge 方法用于向图中添加边。
  4. bfs 方法实现广度优先搜索算法,打印出从起始节点开始的遍历顺序。
  5. 在使用示例中,创建一个包含 6 个顶点的图,并添加了一些边。然后从顶点 A 开始执行 BFS 算法,输出遍历顺序。

你可以根据需要调整图的结构和起始节点,以测试不同的图和起始点。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在