๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ“„ Breadth First Search(BFS)

Question Descriptionโ€‹

๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‰๊ธ€๋žœ๋“œ ์น ์™•๊ตญ ์‹œ๋Œ€์˜ ๋„์‹œ๋ฅผ ์ˆœํšŒํ•ด ๋ณด์„ธ์š”

const heptarchyTree = {
value: 'England', // ์ž‰๊ธ€๋žœ๋“œ
children: [
{
value: 'Northumbria', // ๋…ธ์„ฌ๋ธŒ๋ฆฌ์•„ ์™•๊ตญ
children: [
{
value: 'Bamburgh', // ๋ฐค๋ฒ„๋Ÿฌ ์„ฑ
children: [
{
value: 'Yeavering', // ์˜ˆ๋ฒ„๋ง ์žฅ์›
children: [],
},
],
},
{
value: 'Lindisfarne', // ๋ฆฐ๋””์ŠคํŒ
children: [],
},
],
},
{
value: 'Mercia', // ๋จธ์‹œ์•„ ์™•๊ตญ
children: [
{
value: 'Tamworth', // ํƒฌ์›Œ์Šค
children: [],
},
{
value: 'Repton', // ๋ ™ํ„ด
children: [],
},
],
},
],
};

function travelThroughHeptarchy(heptarchyTree) {
const scroll = []; // ์–‘ํ”ผ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ง€์—ญ ๋ฐฉ๋ฌธ ์ˆœ์„œ๋ฅผ ๊ธฐ๋ก
scroll.push(heptarchyTree); // ์ž‰๊ธ€๋žœ๋“œ๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์–‘ํ”ผ์ง€์— ์ถ”๊ฐ€

// ์–‘ํ”ผ์ง€์— ์•„์ง ๋„์‹œ๊ฐ€ ๋‚จ์•„ ์žˆ์œผ๋ฉด ๊ณ„์† ์ˆœํšŒ
while (scroll.length > 0) {
const kingdom = scroll.shift(); // ์–‘ํ”ผ์ง€์—์„œ ๋‹ค์Œ ๋ฐฉ๋ฌธํ•  ์™•๊ตญ ๋˜๋Š” ๋„์‹œ๋ฅผ ๊บผ๋ƒ„
console.log(kingdom.value); // ๋ฐฉ๋ฌธํ•œ ์™•๊ตญ ๋˜๋Š” ๋„์‹œ ์ด๋ฆ„์„ ๊ธฐ๋ก

// ํ˜„์žฌ ์™•๊ตญ ๋˜๋Š” ๋„์‹œ์˜ ๋ชจ๋“  ํ•˜์œ„ ์ง€์—ญ์„ ์ˆœํšŒํ•˜๊ณ  ์–‘ํ”ผ์ง€์— ์ถ”๊ฐ€
for (const child of kingdom.children) {
scroll.push(child);
}
}
}

travelThroughHeptarchy(heptarchyTree); // ์ž‰๊ธ€๋žœ๋“œ ์น ์™•๊ตญ ์‹œ๋Œ€ ๋„์‹œ ์ˆœํšŒ ์‹œ์ž‘