Binary search tree

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
GuMbA
User
Beiträge: 1
Registriert: Sonntag 14. April 2019, 08:33

Guten Morgen.
Ich bin Physik Student mit Nebenfach Informatik und habe Schwierigkeiten bei einer Aufgabe, die in meiner Klausur dran kam. Da es leider keine Lösungen für die Klausur gibt dachte ich mir ich frage hier einfach mal nach.
Also die Aufgabe war die Implementierung einer Funktion zum Löschen von Knoten in allen Varianten in einem binären Suchbaum.
Das Programm sah wie folgt aus:

def node(l,k,v,r) :
return ([l,k,v,r])

def empty() :
return ([])

def left(array) :
return array[0]

def right(array) :
return array[3]

def key(array):
return array[1]

def value(array) :
return array[2]

def is_empty(tree) :
return tree == ([])

def empty_to_value(tree,k,v) :
if tree == ([]) :
tree.extend([empty(),k,v,empty()])

def empty_st():
return empty()


def lookup(k,tree) :
if is_empty(tree) :
return None
if k < key(tree) :
return lookup(k,left(tree))
elif k > key(tree) :
return lookup(k,right(tree))
else :
return value(tree)


def insert(k,v,tree) :
if is_empty(tree) :
empty_to_value(tree,k,v)
return True
if k < key(tree) :
return insert(k,v,left(tree))
elif k > key(tree) :
return insert(k,v,right(tree))
else :
return False

def delete(...):


tree = node(node(empty(),2,"Anna",empty()),5,"Peter",node(empty(),7,"Günther",node(empty(),9,"Jakob",empty())))

print(tree)
#print(lookup(8, tree))
print(insert(8, "Thomas", tree))
print(lookup(8, tree))
print(tree)



Vielleicht könnt Ihr mir hier ja weiterhelfen, hab's leider immer noch nicht raus bekommen wie ich das machen muss, da man hier ja auch das Problem mit Unterknoten hat, die man dann wieder verlinken muss.
Danke schon mal im Voraus.

GuMbA
Antworten