Python: binärer Baum -> Probleme

Gast #1963715
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
Angehängte Dateien:
Persönliche Seite
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)
Gast
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...
Gast
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 = ...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.