BFS(너비 우선 탐색)

김덕근·2023년 6월 29일
0

BFS

목록 보기
1/1

너비 우선 탐색은 자료 구조인 Queue를 사용한다

FIFO(First In First Out) 선입선출


Queue 선언

import java.util.LinkedList; //import
import java.util.Queue; //import

//int형 queue 선언, linkedlist 이용
Queue<Integer> queue = new LinkedList<>(); 

//String형 queue 선언, linkedlist 이용
Queue<String> queue = new LinkedList<>(); 

자바에서 큐는 LinkedList를 활용하여 생성해야 합니다.
그렇기에 Queue와 LinkedList가 다 import되어 있어야 사용이 가능합니다.
Queue queue = new LinkedList<>()와 같이 선언해주면 됩니다.


Queue 값 추가

//int형 queue 선언
Queue<Integer> stack = new LinkedList<>(); 
queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3);   // queue에 값 3 추가

자바에서 queue에 값을 추가하고 싶다면
add(value) 또는 offer(value)라는 메서드를 활용하면 됩니다.
add(value) 메소드의 경우 만약 삽입에 성공하면 true를 반환하고, 큐에 여유 공간이 없어 삽입에 실패하면 IllegalStateException을 발생시킵니다. queue에 값을 계속해서 추가해나간다면 아래 그림과 같은 형태로 데이터가 쌓이게 됩니다.


Queue 값 삭제

//int형 queue 선언
Queue<Integer> queue = new LinkedList<>(); 
queue.offer(1);     // queue에 값 1 추가
queue.offer(2);     // queue에 값 2 추가
queue.offer(3);     // queue에 값 3 추가
queue.poll();       // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove();     // queue에 첫번째 값 제거
queue.clear();      // queue 초기화

queue에서 값을 제거하고싶다면 poll()이나 remove()라는 메서드를 사용하면 됩니다.
poll()함수는 큐가 비어있으면 null을 반환합니다.
pop을 하면 가장 앞쪽에 있는 원소의 값이 아래 그림과 같이 제거됩니다.
queue의 모든 요소를 제거하려면 clear()메서드를 사용합니다.


Queue 에서 가장 먼저 들어간 값 출력

//int형 queue 선언
Queue<Integer> queue = new LinkedList<>(); 
queue.offer(1);     // queue에 값 1 추가
queue.offer(2);     // queue에 값 2 추가
queue.offer(3);     // queue에 값 3 추가
queue.peek();       // queue의 첫번째 값 참조

Queue에서 첫번째로 저장된 값을 참조하고 싶다면 peek()라는 메서드를 사용하면 됩니다.

profile
안녕하세요!

0개의 댓글