Frage von Dukkayyane, 22

AVL-Baum Rotation- was mache ich falsch?

hi. ich versuche gerade mit python einen avl baum zu programmieren, aber meine rotationen funktionieren nicht :/ der knoten der übergeben wird, ist der, der unausgeglichen ist also der balancefaktor ist -2 oder 2... Weiß jemand was ich falsch mache? Freue mich über eine Antwort! LG

       def rechtsRotation(self, knoten):
            neu=knoten.holeLinks()
            alt_links=neu.holeRechts()
            alt=knoten
            knoten=neu
            alt.setzeLinks(alt_links)
            neu.setzeRechts(alt)
Antwort
von Schachpapa, 13

Ich glaube, du musst den Knoten neu mit return zurückgeben und an die Stelle pappen, wo vorher knoten war.

Du kannst nicht die übergebene Referenz in der Methode umdefinieren.

Kommentar von Dukkayyane ,

Danke für die Antwort, wie meinst du das? so?:

def rechtsRotation(self, knoten):
neu=return knoten.holeLinks()
alt_links=neu.holeRechts()
alt=knoten
knoten=neu
alt.setzeLinks(alt_links)
neu.setzeRechts(alt)
Kommentar von Schachpapa ,

Nein eher so:

def rechtsRotation(self, knoten):
neu=knoten.holeLinks()
alt_links=neu.holeRechts()
alt=knoten
alt.setzeLinks(alt_links)
neu.setzeRechts(alt)
return neu

Wie sieht denn die Stelle aus, wo du rechtsRotation(...) aufrufst?

Und wie sehen die Attribute deiner Klasse aus?

Wenn der Aufruf ungefähr so aussieht:

rechtsRotation(parent.links)

dann sollte es anschließend heißen

parent.links = rechtsRotation(parent.links)

Keine passende Antwort gefunden?

Fragen Sie die Community