Was ist ein Binary Tree?

Die Bezeichnung "Binary Tree" hängt von seiner Datenstruktur ab. Er ist aufgebaut wie ein Baum mit Wurzel (Root=Ursprungsknoten), Zweigen (Nodes) und Blättern (Leafs= Nodes ohne Childnodes). Ein guter Vergleich ist ein Familien-Stammbaum. Der "Binary" Tree steht für Trees mit zwei Childnodes und der "Ternary" Tree für Trees mit drei Childnodes. Wir nutzen Trees für die Repräsentation von Daten in hierarchischen/ geordneten Strukturen. So beispielsweise für Datenbanken (trees for indexing), für Autocompletion(z.B. in Chrome, vergangene Websuchen), für Compilers (Syntax tree to parse expressions) oder für Compressions (JPEG, MP3).

Es wird zwischen "Binary Trees" und "Binary Search Trees" unterschieden. Bei "Binary Search Trees" sind die Knoten wie folgt geordnet: left< node< right
Das bedeutet, der linke Childnode ist in der Struktur immer kleiner als der Parentnode, welcher wiederum kleiner als der rechte Knoten ist.

Dadurch eigenen sich Binary Search Trees, wie der Name es schon vermuten lässt, ausgezeichnet für das finden von Werten.

    Ablauf:
  1. Wir suchen nach dem Wert 1
  2. Ist 1 kleiner oder größer als der Root-Node?
  3. Ja? -> also schauen wir den linken Subtree an
  4. Dort wird der oberste Knoten angeschaut und wieder kommt die Frage: ist er der Knoten kleiner oder größer?
  5. Das geht so lange, bis wir den Wert schließlich gefunden haben. Durch diese Vorgehensweise, konnten wir bereits zu Beginn der Suche die Hälfte der Suchoptionen ausschließen.
Search O(log n)
Insert O(log n)
Delete O(log n)


Durchquerung von Trees


In linearen Datenstrukturen, wie z.B. der Linked List, gibt es eine klare Richtung zum Durchlaufen der Struktur. Bei Trees gibt es unterschiedliche Wege.