알고리즘

소스코드 - Kotlin

fun main() {
    // 노드가 연결된 간선 -> 인접 리스트
    val graph = mapOf(
        1 to listOf(2, 3, 4),
        2 to listOf(1, 4),
        3 to listOf(1, 4),
        4 to listOf(1, 2, 3)
    )

    println(bfs(graph, 1)) // 1, 2, 3, 4
}

fun bfs(graph: Map<Int, List<Int>>, start: Int): List<Int> {
    val visited = mutableSetOf<Int>()
    val queue: Queue<Int> = LinkedList<Int>()
    val result = mutableListOf<Int>()

    queue.add(start)

    while (queue.isNotEmpty()) {
        val current = queue.poll()
        if (current !in visited) {
            visited.add(current)
            result.add(current)
            graph[current]?.forEach {
                if (it !in visited) {
                    queue.add(it)
                }
            }
        }
    }
    return result
}

범위 및 함수 사용시 유의사항

장점

단점

시간 복잡도