Hallo allerseits! Ich bin gerade dabei einen binäre Baum in Python zu programmieren. Das ganze basiert auf einem Kompositum. Es gibt eine Abstrakte Oberklasse "Baumelement" für die beiden Abschlüsse ( "AbschlussL" und "AbschlussR". Außerdem noch eine Klasse "Knoten" und "Baum" Jetzt habe ich mich mal an der Methode "einfuegen" versucht aber es will eifnach nicht klappen. Ich muss ja am Anfang vergleichen ob mein einzufügendes element > oder < meiner wurzel ist. Doch genau immer mit dieser wurzel scheitere ich bzw. bringt er einen Fehler egal was ich mache. Wie könnte ich das mit der wurzel geschickt lösen? Wäre wirklich sehr dankbar für Hilfe, da ich langsam echt keinen Nerven mehr hab :D
baum schrieb: > Es gibt eine Abstrakte Oberklasse "Baumelement" für die beiden > Abschlüsse ( "AbschlussL" und "AbschlussR". Außerdem noch eine Klasse > "Knoten" und "Baum" Hört sich kompliziert an ;) > Ich muss ja am Anfang vergleichen ob mein > einzufügendes element > oder < meiner wurzel ist. Wenn du einen binären Suchbaum haben willst ist das Vorteilhaft... Ich würde ein einziges "Element" nutzen, welches einen Wert, einen linken und einen rechten Nachbarn hat. Ein Knoten zeichnet sich dann dadurch aus, das er einen linken oder rechten Nachbar hat, ein Blatt ein solches was keins von beidem hat. Das hat den Vorteil, dass du immer mit der gleichen Datenstruktur arbeiten kannst und eventuell löst sich der "Knoten" mit der Wurzel auch von alleine auf ;) (Ein Baum charakterisiert sich dann einfach indem du einen "root"/wurzel Knoten hast)
Ich würde es auch sehr gerne anders machen aber leider ist es so vorgegeben.(Aufgabenstellung). Ich muss genau diese Klassen nehmen und soll es so mit > und < machen. Aber Ich müsste ja eiegentlich nur den Benutzer aufforden eine Wurzel zu erstellen anhand deren string dann die anderen eingaben mit > oder < einsortiert werden. Nur iwie klappt es einfach nicht egal wie und wo ich eine Wurzel erstellen will bringt er einen Fehler. Entweder steh ich grad so auf dem Schlauch...
baum schrieb: > einen Fehler. Entweder steh ich grad so auf dem Schlauch... Oder der Fehler sagt was da falsch läuft? "Irgendein Fehler" ist wenig hilfreich bei der Analyse.
oh sry ganz vergessen zu schreiben. Am meisten kommt der Fehler "global name wurzel is not defined" immerm wenn ich was mit dieser wurzel machen will.
Dann wirst du keine globale Variable "wurzel" haben... für mehr müsste man Quelltext sehen/die Struktur des Programms genauer kennen.
ups, übersehen... du erzeugst den Baum, wenn "wurzel" noch garnicht definiert ist, was soll der Interpreter denn dann bitte machen?
Wie meinst du das? das wurzel = knoten('test') ganz unten? oder woanderst?
Dein Fehler tritt vermutlich eine Zeile vorher auf. Weil da wird in der Funktion ja "wurzel" verwendet, obwohl das noch nicht definiert ist. Du solltest für sowas nicht auf globale Werte zurückgreifen, sondern diese als Parameter übergeben.
class Baum(object): "KLasse implemenitiert Baum" def __init__(self): self.abschlussL = AbschlussL() self.abschlussR = AbschlussR() self.nachfolgerL = AbschlussL self.nachfolgerR = AbschlussR global wurzel # ist hinzugekommen self.wurzel = wurzel wurzel = ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.