Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,88 @@
/*
✅문제 제목: 이진트리 넓이우선탐색(BFS)

✅문제 유형: BFS

✅문제 풀이 날짜: 2024-09-08

💡문제 분석 요약
- 이진트리를 넓이우선탐색해 보세요.
- 1 2 3 4 5 6 7

💡알고리즘 설계
- 현재 노드 기준 왼쪽 자식 노드는 (현재 노드 x 2), 오른쪽 자식 노드는 (현재 노드 x 2 + 1)
- 노드를 담을 큐를 빈 배열로 선언한다.
- 재귀를 돌면서 큐에서 노드를 꺼내고 왼쪽 자식 노드, 오른쪽 자식 노드를 넣는다.
- 꺼낸 노드가 7이면 함수를 종료한다.
*/

function solution() {
let answer = '';
const queue = [];

function BFS() {
const node = queue.shift();
answer += node + ' ';

if (node === 7) {
return;
}

const left = node * 2;
const right = node * 2 + 1;

queue.push(left);
queue.push(right);

BFS();
}

queue.push(1);
BFS(0);

return answer;
}

console.log(solution());

/*
✅문제 제목: 이진트리 넓이우선탐색(BFS)

✅문제 유형: BFS

✅문제 풀이 날짜: 2024-09-08

💡문제 분석 요약
- 이진트리를 넓이우선탐색해 보세요.
- 1 2 3 4 5 6 7

💡알고리즘 설계
- ⭐ while문 풀이
- 현재 노드 기준 왼쪽 자식 노드는 (현재 노드 x 2), 오른쪽 자식 노드는 (현재 노드 x 2 + 1)
- 노드를 담을 큐를 빈 배열로 선언한다.
- 큐가 비어있지 않은 조건으로 while문을 돌면서 큐에서 노드를 꺼내고 왼쪽 자식 노드, 오른쪽 자식 노드를 넣는다.
*/

function solution2() {
let answer = '';

const queue = [];

queue.push(1);
while (queue.length) {
const node = queue.shift();
answer += node + ' ';

for (const next of [node * 2, node * 2 + 1]) {
if (next > 7) {
continue;
}

queue.push(next);
}
}

return answer;
}

console.log(solution2());