Forum: PC-Programmierung Python: binärer Baum -> Probleme


von baum (Gast)


Angehängte Dateien:

Lesenswert?

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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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)

von baum (Gast)


Lesenswert?

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...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von baum (Gast)


Lesenswert?

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.

von qwertz (Gast)


Lesenswert?

Dann wirst du keine globale Variable "wurzel" haben... für mehr müsste 
man Quelltext sehen/die Struktur des Programms genauer kennen.

von baum (Gast)


Lesenswert?

@quertz habe das programm oben angehangen

von qwertz (Gast)


Lesenswert?

ups, übersehen... du erzeugst den Baum, wenn "wurzel" noch garnicht 
definiert ist, was soll der Interpreter denn dann bitte machen?

von baum (Gast)


Lesenswert?

Wie meinst du das? das wurzel = knoten('test') ganz unten? oder 
woanderst?

von qwertz (Gast)


Lesenswert?

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.

von Daniel -. (root)


Lesenswert?

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
Noch kein Account? Hier anmelden.