wir haben dieses Projekt auch gerade im Unterricht ganz nett eigendlich q Baum ich habe allerdings ein anderes Problem.. ich habe eine Methode geschrieben um festzustellen auf welcher ebene ein Knoten sitzt.. das ist eine praktische und einfache Sache dachte ich mir.. Soviel zur Vorgeschichte.. realisiert ist das allerdings noch nicht ( 6 stunden arbeite ich schon dran)
also die Methode ist wie folgt aufgebaut.. ich mache eine rekursion bis ich beim gesuchten Knoten angekommen bin... soweit so gut die rekursion funktioniert auch habe ich bin finde eines Knoten auch benutzt.. jetzt das Problem die Mittlere IF- Bedingung wird 100% ausgeführt allerdings ist das was ich zurückbekomme immer none obwohl der counter gesetzt ist.. Wenn jemand ne idee hat woran das liegen kann bitte meldet euch.
Code: Alles auswählen
def countArea(self, value, node = None, counter = None):
if node == None and counter == None: # prüfen ob der Erste durchlauf ist
node = self.__root # start auf die Wurzel setzen
counter = 0 # counter initialisieren
if node.getContent() > value: # wenn der Knoten größer als der Wert ist linken Wert prüfen
if node.getLeftValue() != None: # wenn es einen linken Knoten gibt
counter = self.countArea(value, node.getLeftNode(), counter+1) # weiter im Baum nach links
else:
raise OwnError("ERROR_NOT_IN: Wert ist nicht im Baum") # abbruch durch Fehler
if node.getContent() == value: # Werte sind gleich
print "content" , value
print "node", node.getContent()
print "vor return", counter
return counter
if node.getContent() < value: # wenn der Knoten kleiner als der Wert ist rechten Knoten prüfen
if node.getRightValue() != None: # wenn es einen rechten Knoten gibt
counter = self.countArea(value, node.getRightNode(), counter+1) # weiter nach rechts gehen
else: # wenn es keinen rechten Wert mehr gibt ist der Knoten nicht im Baum
raise OwnError("ERROR_NOT_IN: Wert ist nicht im Baum") # abbruch durch Fehler
Na also das war jetzt die Methode.. soo dann noch eine anmerkung wenn ich das return ohne IF_Bedingung mache dann bekomme ich eine 1 zurück.. ist erstmal an der stelle egal was denke ich.. dasDing ist nur das er die Ausgabe auch anständig ausspuckt und damit bewisen ist das er in die Besagt If-bedingung geht..
Es wäre schön wenn mir jemand helfen kann und es muss sich auch nicht Zwingend um In-Order traversierung handeln..
viel Dank schon mal
Pille
Theorie und Praxis sind in der Theorie das selbe, doch unterscheiden sie sich meist in der Praxis meilenweit