在javascript中实现一个广度优先搜索函数

在javascript中实现一个广度优先搜索函数,javascript,graph,breadth-first-search,Javascript,Graph,Breadth First Search,我正在尝试实现一个广度优先搜索函数,它接收一个图、一个开始顶点和一个结束顶点进行搜索,并使用广度优先搜索算法定位给定的顶点 以下是我仅使用start的代码,如何添加结束值,以便在执行以下操作时: const list = { 'A': ['B', 'C'], 'B': ['A', 'F', 'G'], 'C': ['A', 'H'], 'D': [], 'E': ['F'],

我正在尝试实现一个广度优先搜索函数,它接收一个图、一个开始顶点和一个结束顶点进行搜索,并使用广度优先搜索算法定位给定的顶点

以下是我仅使用start的代码,如何添加结束值,以便在执行以下操作时:

const list = {
            'A': ['B', 'C'],
            'B': ['A', 'F', 'G'],
            'C': ['A', 'H'],
            'D': [],
            'E': ['F'],
            'F': ['B', 'E', 'H', 'I'],
            'G': ['B'],
            'H': ['C', 'F'],
            'I': ['F'],
        }
const graph = new Graph(list);
breadthFirstSearch(graph, 'A', 'I')  // true
稍微调整一下代码(其逻辑接近正确),然后在BFS上遵循不太准确的规则,看看下面的

const list={
“A”:[“B”,“C”],
'B':['A','F','G'],
'C':['A','H'],
“D”:[…],
“E”:[F'],
‘F’:[‘B’、‘E’、‘H’、‘I’],
'G':['B'],
'H':['C','F'],
“I”:[F'],
}
函数宽度优先搜索(图形、开始、结束){
const queue=[{parent:'Root',node:start}];
访问的常量={};
让v;
while(queue.length){
v=queue.shift();
已访问[v.node]=v.parent;
如果(v.node==结束){
回访;
}
for(图[v.node]的let边){
如果(!已访问[边缘]){
push({parent:v.node,node:edge});
}
}
}
}
让结果=横向优先搜索(列表“A”、“I”);
控制台日志(结果)
const breadthFirstSearch = (graph, start, end) => {
    const queue = [start];
    const result = [];
    const visited = {};
    let currentVertex;
    visited[start] = true;

    while(queue.length){
        currentVertex = queue.shift();
        result.push(currentVertex);
        this.adjacencyList[currentVertex].forEach(neighbor => {
            if(!visited[neighbor]){
                visited[neighbor] = true;
                queue.push(neighbor);
            }
        });
    }
    return result;
}