1 / 10

Einführung in die Informatik für Naturwissenschaftler und Ingenieure

Wintersemester 2007/08. Einführung in die Informatik für Naturwissenschaftler und Ingenieure ( alias Einführung in die Programmierung) (Vorlesung). Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl für Algorithm Engineering. Kapitel 8: Elementare Datenstrukturen. Inhalt

olympe
Download Presentation

Einführung in die Informatik für Naturwissenschaftler und Ingenieure

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl für Algorithm Engineering

  2. Kapitel 8: Elementare Datenstrukturen • Inhalt • Definition  • ADT Keller  • ADT Schlange  • ADT Liste  • ADT Binärbaum  • Exkurs: Einfache Dateibehandlung • Exkurs: Strings (C++) … endlich!  Rudolph: EINI (WS 2007/08) ● Kap. 8: Elementare Datenstrukturen

  3. Kapitel 8: Elementare Datenstrukturen ADT Binäre Bäume Beispiel: Zahlenfolge 17, 4, 36, 2, 8, 19, 40, 6, 7, 37 kleiner : nach links größer : nach rechts z.B. „Suche, ob 42 enthalten“ benötigt nur 3 Vergleiche bis zur Entscheidung false Rudolph: EINI (WS 2007/08) ● Kap. 8: Elementare Datenstrukturen

  4. Blätter Kapitel 8: Elementare Datenstrukturen ADT Binäre Bäume: Terminologie keine Wurzel und kein Blatt  innerer Knoten Wurzel L R linker Unterbaum rechterUnterbaum Rudolph: EINI (WS 2007/08) ● Kap. 8: Elementare Datenstrukturen

  5. Kapitel 8: Elementare Datenstrukturen ADT Binäre Bäume: Datenstruktur struct BinTree { T data; // Nutzdaten BinTree *lTree, *rTree; // linker und rechter Unterbaum}; Falls ein Unterbaum nicht existiert, dann zeigt der Zeiger auf 0. bool IsElement(int key, BinTree *tree) { if (tree == 0) return false; if (tree->data == key) return true; if (tree->data < key) return IsElement(key, tree->rTree); return IsElement(key, tree->lTree);} Rudolph: EINI (WS 2007/08) ● Kap. 8: Elementare Datenstrukturen

  6. Kapitel 8: Elementare Datenstrukturen ADT Binäre Bäume: Einfügen BinTree *Insert(int key, BinTree *tree) { if (tree == 0) { BinTree *b = new BinTree; b->data = key; b->lTree = b->rTree = 0; return b; } else { if (tree->data < key) tree->rTree = Insert(key, tree->rTree); else if (tree->data > key) tree->lTree = Insert(key, tree->lTree); return tree; } } Rudolph: EINI (WS 2007/08) ● Kap. 8: Elementare Datenstrukturen

  7. 1 20 18 19 2 17 7 16 8 9 3 6 10 15 4 5 12 13 11 14 Kapitel 8: Elementare Datenstrukturen ADT Binäre Bäume: Aufräumen void Clear(BinTree *tree) { if (tree == 0) return; // Rekursionsabbruch Clear(tree->lTree); // linken Unterbaum löschen Clear(tree->rTree); // rechten Unterbaum löschen delete tree; // aktuellen Knoten löschen} u.s.w. Rudolph: EINI (WS 2007/08) ● Kap. 8: Elementare Datenstrukturen

  8. ADT Binäre Bäume Kapitel 8: Elementare Datenstrukturen Höhe := Länge des längsten Pfades von der Wurzel zu einem Blatt. Höhe(leerer Baum) = 0 Höhe(nicht leerer Baum) = 1 + max { Höhe(linker U-Baum), Höhe(rechter U-Baum) } Anmerkung: rekursive Definition! (U-Baum = Unterbaum) Rudolph: EINI (WS 2007/08) ● Kap. 8: Elementare Datenstrukturen

  9. 1 2 3 4 Kapitel 8: Elementare Datenstrukturen ADT Binäre Bäume Auf Ebene k können jeweils zwischen 1 und 2k-1 Elemente gespeichert werden. • In einem Baum der Höhe h können also zwischen h und Elemente gespeichert werden! Rudolph: EINI (WS 2007/08) ● Kap. 8: Elementare Datenstrukturen

  10. 1 2 3 4 ● Ein vollständiger Baum der Höhe h besitzt 2h – 1 Knoten. Man braucht maximal h Vergleiche, um Element (ggf. nicht) zu finden. Bei n = 2h – 1 Elementen braucht man log2(n) < h Vergleiche! ● Ein degenerierter Baum der Höhe h besitzt h Knoten (= lineare Liste). Man braucht maximal h Vergleiche, um Element (ggf. nicht) zu finden. Bei n = h braucht man also n Vergleiche! Kapitel 8: Elementare Datenstrukturen ADT Binäre Bäume Rudolph: EINI (WS 2007/08) ● Kap. 8: Elementare Datenstrukturen

More Related