Hochgeladen von Maher Brahim

Aufgabe 2

Werbung
6
Aufgabe 2: Binärer Suchbaum - Operationen
a)
def Tiefe (B):
// B ist der Binäre Baum
if B == None:
return -1
else:
return 1 + max(Tiefe (B["left"]), Tiefe (B["right"]))
Da in dieser Funktion n- Knoten überprüft werden müssen, um die Tiefe des Baums feststellen zu können, hat die
Funktion eine Laufzeit von 𝑂(𝑛).
(siehe Erfahrungen 2a) hier hat sich auch die gleiche Schlussfolgerung mit der
Implementierung der Suche nach der Tiefe in der .py Datei von Aufgabe 1 ergeben.)
b)
def Anzahl_der_Knoten (B,x):
if B == None:
return 0
elif x == 0:
return 1
else:
return
Anzahl_der_Knoten(B["left"],x-1) +
Anzahl_der_Knoten(B["right"],x-1)
def Min_Knoten(B):
d = Tiefe(B)
// Das ist die Suche nach der Tiefe aus Aufgabe a)
m = 1
K = 0
for i in range (1,d+1):
n = Anzahl_der_Knoten (B,i)
if n < m:
m = n
K = i
return K
Die Laufzeit der Berechnung der Tiefe erfolgt in 𝑂(𝑛). Die Berechnung der Anzahl der Knoten in einer gegebenen
Tiefe erfolgt in 𝑂(2𝑛 ). Für die Berechnung der k kleinsten Schlüsseln, erfordert die Berechnung der Tiefe des Baumes,
und dann wird für jede Tiefe die Berechnung der Anzahl der Knoten durchgeführt. Wir haben im Worst Case (wenn
die Tiefe des Baums n und nicht log 2 𝑛 𝑖𝑠𝑡. ) die Laufzeit dieser Funktion O(n2).
Herunterladen