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 |