Algorithms

[Algorithms] BFS 코드 구조

유자맛바나나 2022. 6. 12. 16:04

 

 

public void bfs(Node root) {
	Queue<Node> q = new LinkedList<>();
	q.offer(root);

	while(!q.isEmpty()){
        int len = q.size();
        
        for(int i=0; i<len; i++){
            // dequeue
            Node curNode = q.poll();
            
            // [중요] 종료 조건 체크
            if(isTerminateCondition(curNode)){
                return;
            }
            
            // 종료가 아니라면, find nextNode
            Node nextNode = makeCandidate(curNode);
            
            // enqueue
            if(checkAddCondition(nextNode) && !isVisit(nextNode)){
                addVisitMap(nextNode); // [중요] enqueue할 때 visitMap에 추가한다!
                q.offer(nextNode);
            }
        }
    }
}

 

'Algorithms' 카테고리의 다른 글

[프로그래머스] KAKAO RECRUITMENT 2022 신고결과받기  (0) 2022.03.04
[Codility] PermMissingElem  (0) 2022.02.28
[Codility] OddOccurrencesInArray  (0) 2022.02.26
[Codility] CyclicRotation  (0) 2022.02.24
[Codility] BinaryGap  (0) 2022.02.22