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
Code:
# -*- coding: cp1252 -*-
class Baumelement(object):
"Abstrakte Oberklasse für Knoten und Abschluss"
pass
class AbschlussL(Baumelement):
def __init__(self):
pass
def einfuegen(self,element,altKnot,abschluss):
altKnot.nachfolger = Knoten(element, self)
def laengeGeben(self):
pass
def Info(self):
pass
class AbschlussR(Baumelement):
def __init__(self):
pass
def einfuegen(self,element,altKnot,abschluss):
altKnot.nachfolger = Knoten(element, self)
def laengeGeben(self):
pass
def Info(self):
pass
class Knoten(Baumelement):
"Klasse implementiert Baumelemente"
def __init__(self,element, nachfolgerL, nachfolgerR):
self.element = element
self.nachfolgerL = nachfolgerL
self.nachfolgerR = nachfolgerR
def einfuegen(self, element, altKnot, abschlussL, abschlussR):
if self.nachfolgerL < altKnot.nachfolger:
self.nachfolgerL.einfuegen(element, self, abschlussL)
else:
self.nachfolgerR.einfuegen(element, self, abschlussR)
if self.nachfolgerR > altKnot.nachfolger:
self.nachfolgerR.einfuegen(element, self, abschlussR)
else:
self.nachfolgerL.einfuegen(element, self, abschlussL)
def laengeGeben(self):
pass
def Info(self):
pass
class Baum(object):
"KLasse implemenitiert Baum"
def __init__(self):
self.abschlussL = AbschlussL()
self.abschlussR = AbschlussR()
self.nachfolgerL = AbschlussL
self.nachfolgerR = AbschlussR
self.wurzel = wurzel
print "Neuer Baum wurde erfolgreich erzeugt!"
print " Bitte weitere Elemente einfuegen!"
"""def wurzelEinfuegen (self,element):
if self.wurzel == None:
self.wurzel = wurzel(element)"""
def einfuegen(self, element):
"Einfuegen eines Elements in den Baum"
if element == wurzel:
print "Element existiert bereits"
False
if element < wurzel:
self.nachfolgerL.einfuegen(element, self)
else:
self.nachfolgerR.einfuegen(element, self)
def laengeGeben(self):
"gibt Anzahl der Elemente im Baum an"
pass
def Info(self):
pass
ba = Baum()
wurzel = Knoten( 'test')
LG voll-hoast