" 탐색을 할 때 너비를 우선으로 탐색하는 알고리즘 "
1. 1을 큐에 넣는다.
2. 1을 큐에서 빼고, 인접한 2와 3을 큐에 넣는다.
3. 2를 큐에서 빼고, 인접한 4와 5를 큐에 넣는다.
4. 3을 큐에서 빼고, 인접한 6과 7을 큐에 넣는다.
5. 탐색하지 않은 노드가 없으므로 큐에 들어있는 값들 4, 5, 6, 7을 순서대로 뺀다.
#include<bits/stdc++.h>
#define MAX 100000
using namespace std;
bool check[MAX];
vector<int> v[MAX];
void BFS(int start) {
check[start] = true;
queue<int> q;
q.push(start);
while (!q.empty()) { // 큐에 값이 있을 경우 반복
int x = q.front();
q.pop();
cout << x << " ";
for (int i = 0; i < v[x].size(); i++) {
int y = v[x][i];
if (!check[y]) {
q.push(y);
check[y] = true;
}
}
}
}
int main() {
int t, n, m;
int start = MAX;
cin >> t; // 간선의 개수 주어짐
for (int i = 0; i < t; i++) {
cin >> n >> m; // 정점끼리 연결
v[n].push_back(m);
v[m].push_back(n);
if (start > n) { // 시작점 정하기 위함
start = n;
}
}
BFS(start);
}
참조 사이트
https://dev.to/snird/breadth-first-traversal-for-binary-trees-in-js-h9m
https://hongku.tistory.com/156