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);
}
}
}
}