Skip to main content

๐Ÿ“„ 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); // ้–‹ๅง‹้Šๆญท่‹ฑๆ ผ่˜ญไธƒๅœ‹ๆ™‚ไปฃ็š„ๅŸŽ้Žฎ