Describe graph traversal algorithm functionality
by shrpne
JavaScript
const graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
};
function bfs(graph, startNode) {
const queue = [startNode]; // Очередь для хранения узлов, которые нужно посетить
const visited = new Set(); // Множество для отслеживания посещенных узлов
const result = []; // Массив для хранения порядка обхода
visited.add(startNode); // Добавляем начальный узел в список посещенных
while (queue.length > 0) {
const currentNode = queue.shift(); // Извлекаем узел из начала очереди
result.push(currentNode); // Добавляем его в результат обхода
// Перебираем всех соседей текущего узла
for (const neighbor of graph[currentNode]) {
// Если сосед еще не был посещен, добавляем его в очередь и отмечаем как посещенный
if (!visited.has(neighbor)) {
visited.add(neighbor);
queue.push(neighbor);
}
}
}
return result;
}
console.log(bfs(graph, 'A'))