# File Parser.rb, line 199 def search (knoten, symb) if knoten.getSoehne.size == 0 if knoten.getName == symb # Wenn der Knoten keine Söhne hat und der Name stimmt wird der Knoten zurückgegeben. # Er ist der gesuchte Knoten. return knoten else # Wenn der Knoten zwar keine Söhne hat aber der Name nicht stimmt wird nil zurückgegeben # Es ist nicht der gesuchte Knoten und es gibt keine Söhne zum weitersuchen return nil end # Wenn der Knoten Söhne hat kann er nicht der gesuchte Knoten sein. Es wird # mit den Söhnen als Wurzelknoten neuer Teilbäume weitergesucht. else # Sucht jeden Sohn von rechts nach links nach dem gesuchten Knoten ab. # sobald er gefunden wird er gefunden wird die Suche beendet und der Knoten # wird zurückgegeben. Wenn kein Sohn den gesuchten Knoten enthält wird nil zurückgegeben. knoten.getSoehne.reverse.each {|sohn| a = search(sohn,symb) (a != nil) ? (return a) : () } return nil end end