• Keine Ergebnisse gefunden

Information Hiding Binärbäume Dr. Reinhard Wolfinger

N/A
N/A
Protected

Academic year: 2022

Aktie "Information Hiding Binärbäume Dr. Reinhard Wolfinger"

Copied!
9
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Information Hiding Binärbäume

Dr. Reinhard Wolfinger

Email: reinhard.wolfinger@jku.at Telefon: 0732/2468-7134

Sprechstunde: Dienstag, 14:00-15:00

Institut für Systemsoftware

Hochschulfondgebäude

3. Stock, Raum HF301

(2)

Häufige Fehler (1)

2

public boolean get(int val) { Node p = head;

while(p != null) {

if(p.val == val) break;

p = p.next;

}

if(p != null) return true;

else

return false;

}

public boolean get(int val) { Node p = head;

while(p != null) {

if(p.val == val) break;

p = p.next;

}

return (p != null);

}

public boolean get(int val) { Node p = head;

while(p != null) {

if(p.val == val) return true;

p = p.next;

}

return false;

}

bei Übung 1: Zahlenmenge als verkettete Liste

(3)

Häufige Fehler (2)

2

public boolean get(int val) { boolean found = false;

if(size() != 0) { Node p = head;

while(p != null && p.val != val) { p = p.next;

}

if(p != null)

found = true;

}

return found;

}

public boolean get(int val) { Node p = head;

while(p != null && p.val != val) { p = p.next;

}

return (p != null);

}

public boolean get(int val) {

for(Node p = head; p != null; p = p.next) { if(p.val == val) return true;

}

return false;

}

found = (p != null);

(4)

Häufige Fehler (3)

4

void set(int val) {

if(get(val) == false) {

Node q = new Node(val);

q.next = head;

head = q;

} }

void set(int val) { if(!get(val)) {

Node q = new Node(val);

q.next = head;

head = q;

} }

void set(int val) { if(get(val)) return;

Node q = new Node(val);

q.next = head;

head = q;

}

(5)

Häufige Fehler (4)

5

public void set(int val) { boolean truth = false;

Node p = head;

while(p != null) { if(p.val == val) { truth = true;

}

p = p.next;

}

if(truth == false) { insert(val);

} }

public void insert(int val) { Node q = new Node(val);

q.next = head;

head = q;

}

void set(int val) { if(!get(val)) insert(val);

}

void set(int val) { if(get(val)) return;

Node q = new Node(val);

q.next = head;

head = q;

}

(6)

Information Hiding

6

public class Tree { Node head;

public Tree() { … }

public void insert(String name) { … }

public boolean search(String name) { … } public boolean remove(String name) { … } }

public class Node { String name;

Node left, right;

Node(String name) { … } }

• Ist "Information Hiding" verletzt?

• Können Variablen oder Methoden weniger restriktiv deklariert werden,

ohne das "Information Hiding" aufzuweichen?

(7)

Lineare Liste vs. Binärer Suchbaum

7

• Wie viele Stringvergleiche sind jeweils minimal, durchschnittlich, maximal nötig um ein Element zu finden?

• Angenommen der binäre Suchbaum ist maximal entartet? Wie ändern sich die Zahlen (minimal, durchschnittlich, maximal)?

Eine sortierte verkette lineare Liste und ein vollständiger binärer Suchbaum enthalten die gleiche Anzahl von n String-Elementen.

• Welche Tiefe hat der binäre Suchbaum im entarteten Fall?

(8)

Einfügen in binären Suchbaum

8

Binärer Suchbaum für Integer-Werte Suchbaum-Ordnung:

Elemente linken Unterbaumr < Wurzelelement < Elemente rechter Unterbaum

• Einfügen 6, 12, 4, 13, 9, 7, 8, 5, 3, 1, 20

• Welche max. Tief hat der Baum?

• Fügen sie Element 7 erneut ein? geht das? Welche Möglichkeiten gibt es?

(9)

Binärer Suchbaum

9

• Der Grad eines Knoten ist die Anzahl der Knoten, die auf ihn verweisen.

Welche der folgenden Aussagen stimmen (nicht)? Und warum?

• Die Anzahl der Blätter eines vollständigen Baumes wächst exponentiell mit dessen Höhe.

• Die Höhe eines beliebigen Baumes mit n Knoten ist ungefähr ld(n).

• In einem Binärbaum hat jeder Knoten Grad 2.

• Binäre Suchbäume sind entweder aufsteigend oder absteigend sortiert.

• Von der Wurzel bis zu einem beliebigen Blatt gibt es immer genau einen Pfad.

Referenzen

ÄHNLICHE DOKUMENTE

Ein binärer Suchbaum für Integer soll aufgebaut werden. Zeichnen Sie jeweils die Bäume auf die sich zwischen den einzelnen Schritten ergeben. Geht das? Was müssen Sie ändern? Welche 2

Angenommen der binäre Suchbaum ist stark (d.h. maximal) entartet, auf welche Anzahl (minimal, maximal, durchschnittlich) von Vergleichen ändert sich die Suche?. Welche Tiefe hat nun

Ein Student soll einen Suchbaum für Strings implementieren und soll dabei die Prinzipien des Information hiding anwenden. Wieviele Zeilen müssen Sie minimal ändern?. Gibt

Angenommen der binäre Suchbaum ist stark (d.h. maximal) entartet, auf welche Anzahl (minimal, maximal,.. durchschnittlich) von Vergleichen ändert sich

Ein 2D-Suchbaum ist im Prinzip ein ganz normaler binärer Suchbaum, nur dass abhängig von der Tiefe des jeweiligen Knotens einmal in x-Richtung und einmal in y-Richtung

Überlegen Sie (schriftlich!) die Gründe für die jeweiligen Änderungen der Effizienz der einzelnen Methoden. Wodurch ergeben sich die Unterschiede?.. c) Implementieren Sie

und auf Papier im Postkasten (HF-Gebäude, 3.Stock, hinter Aufzug) - Abgabepasswort kommt per E-Mail. - korrigierte Übungen eine Woche

Verwenden Sie für die Implementierung dieser Methoden den IntIterator den jedes Set zur Verfügung stellt (die Implementierung ist vorgegeben, IntIterator iterator(); Details