๐ 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); // ์๊ธ๋๋ ์น ์๊ตญ ์๋ ๋์ ์ํ ์์