【发布时间】:2021-02-17 23:07:22
【问题描述】:
我正在尝试实现一个广度优先搜索函数,该函数接受一个图形、一个起始顶点和一个要搜索的结束顶点,并使用广度优先搜索算法定位给定的顶点。
下面是我的代码只使用 start,如果我这样做,我将如何添加 end 值:
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
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;
}
【问题讨论】:
标签: javascript graph breadth-first-search