A binary tree అనేది ఒక క్రమానికతీయ నిర్మాణం, ఇందులో ప్రతి node సరిగా రెండు children కలిగి ఉంటుంది, వీటిని left మరియు అని పిలుస్తారు. దీనికి ఒక ఉంది; children లేని nodes . ఇది BST, heaps మరియు expression trees కు ఆధారం.
A binary tree అనేది ఒక క్రమానికతీయ నిర్మాణం, ఇందులో ప్రతి node సరిగా రెండు children కలిగి ఉంటుంది, వీటిని left మరియు అని పిలుస్తారు. దీనికి ఒక ఉంది; children లేని nodes . ఇది BST, heaps మరియు expression trees కు ఆధారం.
right 1 depth 0 (root)
/ \
2 3 depth 1
/ \
4 5 depth 2 (leaves: 4,5,3)
class Node:
def __init__(self, val, left=None, right=None):
self.val, self.left, self.right = val, left, right
def inorder(n): # left, node, right -> 4 2 5 1 3
if n:
inorder(n.left); print(n.val); inorder(n.right)
def preorder(n): # node, left, right -> 1 2 4 5 3
if n:
print(n.val); preorder(n.left); preorder(n.right)
def postorder(n): # left, right, node -> 4 5 2 3 1
if n:
postorder(n.left); postorder(n.right); print(n.val)
A level-order (BFS) traversal ఒక queue ను ఉపయోగించి depth by depth ను సందర్శిస్తుంది.
| Traversal | Order | Common use |
|---|---|---|
| Inorder | L, N, R | sorted output of a BST |
| Preorder | N, L, R | copy/serialize a tree |
| Postorder | L, R, N | delete a tree, evaluate expr |
| Level-order | by depth | BFS, shortest path on tree |
ప్రతి traversal ప్రతి node ను ఒక్క సారి సందర్శిస్తుంది → O(n) సమయం, O(h) స్టాక్ స్పేస్ ఇందులో h ట్రీ యొక్క ఎత్తు.
బైనరీ ట్రీలు సహజముగా క్రమానికతీయ డేటా (file systems, parse trees, decision trees) ను మోడల్ చేస్తాయి మరియు సమర్థవంతమైన search మరియు sorting structures కు ఆధారం.
నాలుగు traversals ను నైపుణ్యం చేయడం అవసరం — చాలా చెట్టు interview problems వాటిలో ఒకటి యొక్క వైవిధ్యం.