Requirement se shuru karo: floor 0 visit karo, phir floor 1, phir floor 2…
Hum kisi node ke children tab hi "dekh" sakte hain jab hum us node ko process kar lein. Toh humein un nodes ko yaad rakhna hoga jo discover ho chuke hain par abhi process nahi hue.
Humein unhe discovery order mein process karna hai (pehle root, phir root ke children left→right, etc.). Yeh ordering demand = FIFO = ek queue.
Plain BFS ek flat list deta hai. Level ke hisaab se group karne ke liye, har round ke start mein queue ka size snapshot lo — woh size exactly us current level ke nodes ki count hai.
TimeO(n): har node exactly ek baar enqueue aur ek baar dequeue hota hai. Har node par constant work ⇒ linear total.
SpaceO(w) jahan wmaximum width hai (kisi bhi single level par sabse zyada nodes). Worst case mein ek complete tree ke bottom level par ≈n/2 nodes hote hain ⇒ O(n).
Recall Feynman: 12-saal ke bachche ko samjhao (click to reveal)
Socho ek family tree deewar par bani hai. Tum names ek row at a time, left se right padhna chahte ho. Tumhare paas waiting mein khade logon ki ek line hai (ek queue). Tum line mein pehle waale ko bulao, unka naam likho, aur unhe kaho: "apne bachche line ke PEECHE bhej do." Phir line mein agla banda bulao. Kyunki naye bachche hamesha peeche jaate hain, tum ek poori row padh lete ho pehle, aur us row ka koi bhi bachcha tab tak nahi bulaya jaata. Yahi level order hai — aur waiting line hi queue hai!
Level-order traversal ke liye kaun sa data structure natural hai, aur kyun?
Queue (FIFO); yeh nodes ko discovery order mein serve karta hai isliye paas/leftmost nodes pehle process hote hain, level-by-level order produce hoti hai.
Queue ki jagah stack use karna level-order traversal kyun tod deta hai?
Stack LIFO hai, isliye yeh sabse recently add hue (deepest) node mein pehle jaata hai — isse depth-first order milti hai, level order nahi.
Kyunki queue children enqueue karte waqt badhti hai; count freeze karna exactly current level ke nodes ko fence karta hai taaki tum agले level mein na ghuso.
Tree par BFS ki time complexity kya hai aur kyun?
O(n) — har node ek baar enqueue aur ek baar dequeue hota hai jisme O(1) work lagta hai.
BFS ki space complexity kya hai aur use kya determine karta hai?
O(w) jahan w maximum level width hai; worst case O(n) (complete tree ka bottom level ≈ n/2 nodes).
Python mein BFS ke liye list.pop(0) bura queue kyun hai?
Yeh O(n) hai (saare elements shift karta hai), BFS ko O(n2) bana deta hai; O(1) ke liye collections.deque.popleft() use karo.
Tree par, BFS ka "root se distance" se kya relation hai?
Level/depth root se distance ke barabar hai, isliye BFS (jo badhte distance se expand karta hai) nodes ko level order mein visit karta hai.
BFS ke dauran child missing hone par crash rokne wala guard kya hai?
Enqueue/dereference se pehle if node.left / if node.right check karo (ya None skip karo).