June 16, 2010
Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten Unterbaum Ordnung der Knoten ist relevant - beim normalen geordneten Baum ist Anordnung der Kindknoten egal voller Binärbaum: jeder Knoten hat entweder 2 Kinder oder ist ein Blatt Anzahl der Blätter bei Tiefe h ist 2 h Anzahl der internen Knoten ist 2 h 1
Beispiel: Binärer Baum Figure: Bin-tree.svg, Falk M, Wikimedia, 18.01.2009
Binärer Suchbaum binärer Baum idr als verkettete Datenstruktur realisiert: Objekte mit: Pointer zu Vater-Knoten Pointer zu linkem Unterbaum Pointer zu rechtem Unterbaum Schlüssel binary-search-tree property: Denition X sei ein Knoten in einem binären Suchbaum. Wenn Y ein Knoten im linken Unterbaum von X ist, dann ist key[y] key[x]. Wenn Y ein Knoten im rechten Unterbaum von X ist, dann ist key[x] key[y]
Beispiel: Binärer Suchbaum Figure: Binary_search_tree.svg, ursprünglich erstellt von Derrick Coetzee, Wikimedia, 17.01.2009
Traversierung (Wikipedia, en) 1 preorder ( knoten ): 2 print ( knoten ) 3 if ( knoten. links!= NIL ) then 4 preorder ( knoten. links ) 5 if ( knoten. rechts!= NIL ) then 6 preorder ( knoten. rechts ) 1 postorder ( knoten ): 2 if ( knoten. links!= null ) then 3 postorder ( knoten. links ) 4 if ( knoten. rechts!= null ) then 5 postorder ( knoten. rechts ) 6 print knoten 1 inorder ( knoten ): 2 if ( knoten. links!= NIL ) then 3 inorder ( knoten. links ) 4 print knoten 5 if ( knoten. rechts!= NIL ) then 6 inorder ( knoten. rechts )
Quellen Code: http://de.wikipedia.org/wiki/bin%c3%a4rer_baum Revision 74255630 Denitionen: Cormen et al, Introduction to Algorithms, 2nd Edition
Trie Baum, in dem Strings gespeichert sind Jede Kante mit einem Zeichen beschriftet Suchen (von Einträgen und evtl damit assoziierten Werten) durch Abstieg im Baum
Beispiel: Trie Figure: Trie_example.svg, Booyabazooka, 15.07.2006, Wikimedia
Radix Trie fast genau wie Trie Kanten sind nicht mit einzelnen Zeichen beschriftet, sondern Substrings Knoten mit nur einem Blatt als Kind: Blatt und Vater werden zusammengefasst
Indexed Trie fast genau wie Trie Unterbäume in Array gespeichert, nicht in Liste (?)
Patricia Trie fast genau wie Radix Tree innere Ketten - also Knoten, die jeweils einen eingehenden und einen ausgehenden Pointer haben, werden zusammengefasst bei Radix Trie: nur von Blatt-Knoten ausgehend zusammenfassbar
Quellen Bilder: Wikimedia Commons, siehe Bildunterschrift Cormen et al, Introduction to Algorithms, 2nd Edition Übungsblatt 8
Rot-Schwarz-Bäume: Motivation Geschwindigkeit binärer Suchbäume abhängig von Höhe des Baumes Nur gut, falls Baum annähernd balanciert andernfalls können binäre Suchbäume zu verketteten Listen degenerieren, in Abhängigkeit von Reihenfolge des Einfügens
Rot-Schwarz-Bäume: Eigenschaften 1 Jeder Knoten ist rot oder schwarz 2 Die Wurzel ist schwarz 3 Jedes Blatt ist schwarz 4 Wenn ein Knoten rot ist, sind beide Kinder schwarz 5 Für jeden Knoten: alle Pfade vom Knoten bis zu den Blättern enthalten die gleiche Zahl schwarzer Knoten
Quellen Cormen et al, Introduction to Algorithms, 2nd Edition