Bäume Beispiele > Dateisystem > XML, HTML

Werbung
Stunde13-ProgStruct.ink
Bäume
Beispiele
> Dateisystem
> XML, HTML
> Mindmaps
> FIFA
> ...
Vergleich mit Listen
> Verallgemeinerung von Listen: Mehrere Nachfolgeelemente
Wie bei Listen
> nur ein Nachfolgeelement
> Keine Zyklen
> Eindeutige Wurzel (Element ohne Vorgänger)
> Jeder Knoten ist genau durch einen Pfad mit der Wurzel verbunden
1
Stunde13-ProgStruct.ink
Definitionen:
Niveau 0
Elternelemente: Direkte Vorgänger
Kindelemente: Direkte Nachfolger
Blätter: Knoten ohne Kindelemente (6, 15, 13, ...)
Teilbaum: Beliebiger Knoten und seine
direkten und indirekten Nachfolger
Grads
> eines Knotens: Anzahl der Kindelemente
> eines Baums: Maximaler Grad aller Knoten
(hier zwei)
Niveau 4
Binärbaum: Baum des Grades zwei
Vielwegbaum: Baum mit Grad >= zwei
Tiefe eines Knotens: Länge des Pfades bis zur Wurzel
Beispiele - 16: Tiefe = 3
- Wurzel: Tiefe = 0
2
2
1
Niveau: Alle Knoten mit gleicher Tiefe
Höhe: Längster vorkommende Pfad (größtes Niveau)
2
Stunde13-ProgStruct.ink
Traversierung
- In-Order
Knoten beim zweiten Vorbeikommen zählen
(Blätter beim ersten)
2-1-8-5-9-3-10-6-7-4
Beispiel: Compiler
- Pre-Order
Knoten beim 1. Vorbeikommen zählen
1-2-3-5-8-9-6-10-4-7
Beispiel: Kapitel eines Buchs (in grün)
- Post-Order
Knoten beim letzten Vorbeikommen zählen
2-8-9-5-10-6-3-7-4-1
Beispiel: Traversieren eines Dateisystems, um
Größe zu bestimmen
1
2.1
2.1.1
3
2
2.2
2.1.2
3.1
2.2.1
In Grün: Kapitel eines Buchs
3
Stunde13-ProgStruct.ink
4
Stunde13-ProgStruct.ink
Binärbäume
Node
content:Object
leftNode:Node
rightNode:Node
5
Stunde13-ProgStruct.ink
Binäre Suchbäume
Definition: Binäre Suchbäume sind binäre Bäume für die gilt:
Alle Schlüssel im linken Teilbaum eins Knotens b sind kleiner als b
Alle Schlüssel im rechten Teilbaum eins Knotens b sind größer als b
6
Stunde13-ProgStruct.ink
Einfügen
10, 5, 14, 7, 18, 12, 6
5, 10, 7, 14, 6, 18, 12
5, 10, 7, 6, 14, 12, 18
5, 6, 7, 10, 12, 14, 18
1. Reihe
3. Reihe
5
10
5
10
14
7
12
7
18
6
5
6
4. Reihe
14
12
18
6
7
entarteter Suchbaum
10
12
14
18
7
Stunde13-ProgStruct.ink
Löschen von Elementen in einem binären Suchbaum
Löschen 6
Löschen 7
6
5
14
7
10
10
10
5
Löschen 10
12
7
18
6
5
14
12
14
7
18
12
18
6
1. Möglichkeit: Knoten ist ein Blatt (Beispiel 6): Blatt löschen
2. Möglichkeit: Knoten ist kein Blatt (Beispiel 7) und hat ein Kind: Kind verweist auf
Elternelement des zu löschenden Elements
3. Möglichkeit: Knoten ist kein Blatt (Beispiel 19) und hat zwei Kunder:
a) Kleinstes Elements des rechten Teilbaums ersetzt zu löschenden Knoten
b) Größte Elements des linken Teilbaums ersetzt zu löschenden Knoten
8
Stunde13-ProgStruct.ink
höhenbilanziert, aber nicht vollstä
Weitere Definitionen:
Ein vollständiger Binärbaum hat auf jedem Niveau n < Höhe die maximale Knotenzahl
Ein voller Binärbaum hat auf jedem Niveau die maximale Knotenzahl
Ein Baum ist dann höhenbilanziert, wenn sich für jeden Knoten die Höhe seiner
Teilbäume um höchstens +/- 1 unterscheidet. (Höhenbilanzierte Bäume nennt man
AVL-Bäume Adelson.Velskii und Landis)
1
1
vollständig ==> höhenbilanziert
9
Stunde13-ProgStruct.ink
10
Stunde13-ProgStruct.ink
11
Herunterladen