Hum ise sirf assert nahi karte — hum proof ko base case se upar build karte hain.
Base case. Ek empty tree (ya single node) length ≤1 ki list produce karta hai. Length 0 ya 1 ki list trivially sorted hoti hai. ✔
Inductive hypothesis (IH). Maano ki T se chhote kisi bhi BST ke liye (yaani uske subtrees ke liye), inorder ek sorted list deta hai.
Inductive step. Maano T ka root r hai, left subtree TL hai, right subtree TR hai.
IH se, inorder(TL) sorted hai, aur BST property se TL mein har key <r hai. Toh:
inorder(TL) is sorted, and its last element<r.
IH se, inorder(TR) sorted hai, aur TR mein har key >r hai. Toh:
inorder(TR) is sorted, and its first element>r.
Concatenate karo: [ ...sorted, sab < r ] + [r] + [ sab > r, sorted... ].
Left list aur r ke beech ka boundary increasing hai (last <r). r aur right list ke beech ka boundary increasing hai (r< first). Yeh kyun matter karta hai: do sorted lists ka concatenation khud sorted hota hai tab hi jab pehle ki last ≤ doosre ki first ho — aur humne abhi prove kar diya ki dono joins yeh respect karte hain. ✔
Induction se, kisi bhi BST ka inorder sorted hota hai. ■
8 → 3 → 1 tak left dive karo. 1 print karo. 1 ka koi right nahi.
3 pop karo, 3 print karo. Right mein 6 jao, left dive karo (koi nahi), 6 print karo.
8 pop karo, 8 print karo. Right mein 10 jao, left dive karo (koi nahi), 10 print karo, right mein 14 jao, 14 print karo.
Output: 1, 3, 6, 8, 10, 14 — sorted! Kyun? Har node tab print hua jab uska poora chhota-left family print ho chuka tha.
Complexity. Har node ek baar push/pop hota hai → O(n) time. Stack ke liye O(h) space, jahan h height hai (O(logn) agar balanced ho, O(n) worst-case skewed mein).
Haan — sorted inorder ⟺ BST (distinct keys ke saath). Yeh ek clean validation algorithm deta hai: inorder karo, check karo ki har element > pichle se ho. Koi bhi violation mile toh BST nahi hai. Har node pe min/max ranges check karne se zyada clean hai.
Left spine mein neeche dive karte waqt ancestors ke liye postponed "node visit karo + right jao" kaam.
Recall Feynman: ek 12-saal ke bachche ko explain karo
Socho ek family tree mein bacche khade hain jahan har bachcha apne left side wale sabse lamba aur apne right side wale sabse chhota hai. Tum unhe shortest-to-tallest bulana chahte ho. Toh har bachche pe tum kehte ho: "ruko, pehle main tumhare left side wale sabko bulaata hoon (woh chhote hain), phir TUMHE bulaaunga, phir right wale sabko (bade)." Har bachche ke liye yahi karo aur — magic — woh perfect height order mein nikal aate hain. Woh left-me-right rule hi sab kuch hai.