คำถามปิดคาบ: โค้ด BFS กับ DFS ต่างกันกี่บรรทัด?
ให้นักเรียนอ่านเทียบทีละบรรทัด แล้วชี้ว่าต่างตรงไหน
BFS — แผ่เป็นชั้น
ที่พัก = [จุดเริ่ม]
เคยไป = set()
ลำดับ = []
while ที่พัก:
จุด = ที่พัก.pop(0) # หัวแถว
if จุด in เคยไป: continue
เคยไป.add(จุด)
ลำดับ.append(จุด)
for เพื่อน in sorted(กราฟ[จุด]):
if เพื่อน not in เคยไป:
ที่พัก.append(เพื่อน)
DFS — มุดให้ลึก
ที่พัก = [จุดเริ่ม]
เคยไป = set()
ลำดับ = []
while ที่พัก:
จุด = ที่พัก.pop() # บนสุดของกอง
if จุด in เคยไป: continue
เคยไป.add(จุด)
ลำดับ.append(จุด)
for เพื่อน in sorted(กราฟ[จุด]):
if เพื่อน not in เคยไป:
ที่พัก.append(เพื่อน)
👉 ต่างกัน บรรทัดเดียว — เปลี่ยนแค่ “ภาชนะที่ใช้เก็บ” วิธีเดินก็เปลี่ยนไปทั้งหมด