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