पाठ 9 / 42
Binary Tree
हर node के अधिकतम दो children; traversal हर node को एक बार देखता है।
आकार और शब्द
1
/ \
2 3
/ \
4 5
शीर्ष पर root, नीचे leaves। Height सबसे लंबा root-से-leaf पथ है। संतुलित tree की height ~log n; बिगड़ी हुई एक linked list है जिसकी height n।
चार traversal
Depth-first: pre/in/post-order केवल इसमें भिन्न कि node को कब देखते हैं बनाम recurse। Breadth-first queue उपयोग करता है, स्तर दर स्तर।
def inorder(node, out):
if not node: return
inorder(node.left, out)
out.append(node.val) # visit between children
inorder(node.right, out)
from collections import deque
def bfs(root):
q, out = deque([root]), []
while q:
n = q.popleft()
out.append(n.val)
if n.left: q.append(n.left)
if n.right: q.append(n.right)
return outसंगठन चार्ट
CEO root है; हर प्रबंधक के नीचे रिपोर्ट। सबको बताने के लिए विभाग-गहराई (DFS) या मंज़िल-दर-मंज़िल (BFS) जा सकते हैं।
इंटरव्यू पैटर्न
अधिकांश tree समस्याएँ एक recursive फ़ंक्शन हैं जो children से जानकारी लौटाता है (height, sum, is-balanced, LCA)। सोचें: "इस node के लिए उत्तर देने को मुझे left और right से क्या चाहिए?"