Algorithms

[Algorithms] BFS 코드 구조

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

 

 

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

	while(!q.isEmpty()){
    
    	    // 현재 기준 Queue Size 만큼 Deque해서 처리
            for(int i=0; i<q.size(); 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