Ein Binärbaum ist eine hierarchische Struktur, bei der jeder Knoten höchstens zwei Kinder hat, genannt left und . Er hat eine einzige ; Knoten ohne Kinder werden genannt. Er ist die Grundlage für BSTs, Heaps und Ausdrucksbäume.
Ein Binärbaum ist eine hierarchische Struktur, bei der jeder Knoten höchstens zwei Kinder hat, genannt left und . Er hat eine einzige ; Knoten ohne Kinder werden genannt. Er ist die Grundlage für BSTs, Heaps und Ausdrucksbäume.
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)
Eine Level-Order-Traversierung (BFS) verwendet eine Warteschlange und besucht Knoten Ebene für Ebene.
| 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 |
Jede Traversierung besucht jeden Knoten genau einmal → O(n) Zeit, O(h) Stack-Speicher, wobei h die Höhe ist.
Binärbäume modellieren natürlicherweise hierarchische Daten (Dateisysteme, Parse-Bäume, Entscheidungsbäume) und sind die Grundlage für effiziente Such- und Sortierstrukturen.
Die vier Traversierungen zu beherrschen ist essentiell — die meisten Baum-Interviewfragen sind eine Variation von einer davon.