myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   binärer Baum in Python mit Kompositum (https://mygully.com/showthread.php?t=2177458)

voll-hoast 05.12.10 16:16

binärer Baum in Python mit Kompositum
 
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

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.