Last active
December 22, 2015 03:58
-
-
Save Orpheon/6413386 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Diese Klasse stellt einen Binˆ§ren Baum dar. | |
| * | |
| * @author EFI-5 | |
| * @version 0.1 | |
| */ | |
| public class BinaererBaum { | |
| /* | |
| linker Ast | |
| rechter Ast | |
| hinzufˆºgen eines neuen Elements links | |
| hinzufˆºgen eines neuen Elements rechts | |
| Rˆºckgabe des Inhaltes hˆ§mmer au | |
| ˆÑndern des Inhaltes hˆ§mmer sowieso | |
| Rˆºckgabe des linken Astes | |
| Rˆºckgabe des rechten Astes | |
| ˆÑndern des linken Astes | |
| ˆÑndern des rechten Astes | |
| Lˆ schen des Elements links | |
| Lˆ schen des Elements rechts | |
| Bin ich leer? hˆ§mmer au | |
| Der Inhalt hˆ§mmer | |
| */ | |
| /** | |
| * Der Inhalt, als möglichst abstraktes Objekt gespeichert. | |
| */ | |
| private Object inhalt; | |
| /** | |
| * LinkerAst und RechterAst sind auch binaere Bäume | |
| */ | |
| private BinaererBaum linkerAst; | |
| private BinaererBaum rechterAst; | |
| /** | |
| * Constructor, d.h. diese Methode wird beim erstellen einer neuen | |
| * Instanz (new BinaererBaum()) aufgerufen | |
| */ | |
| public BinaererBaum() {// Gleicher Name wie die Klasse + keinen Rückgabewert = Constructor | |
| // Hier wollen wir alle Attribute (=Variablen, die zur Klasse gehören) initalisieren, so dass es einen default Wert gibt | |
| inhalt = null; | |
| linkerAst = null; | |
| rechterAst = null; | |
| } | |
| /** | |
| * Setzt den Inhalt auf das Objekt o. Wenn o == null ist, wird eine | |
| * IllegalArgumentException geworfen. | |
| * @param obj der neue Inhalt, darf nicht null sein. | |
| */ | |
| public void setInhalt(Object obj) { | |
| if (obj == null) { | |
| throw new IllegalArgumentException("Man darf keinen Inhalt als null speichern, es muss ein Objekt sein."); | |
| } else { | |
| inhalt = obj; | |
| } | |
| } | |
| /** | |
| * Gibt den Inhalt des Baumes zurück. Wenn der Baum leer ist, wirft er | |
| * eine RuntimeException. | |
| * @return inhalt | |
| */ | |
| public Object getInhalt() { | |
| if (!leer()) { | |
| return inhalt; | |
| } else { | |
| throw new RuntimeException("Der Inhalt ist leer"); | |
| } | |
| } | |
| /** | |
| * @return Linker Ast | |
| */ | |
| public BinaererBaum getLinkerAst() { | |
| if (linkerAst != null) { | |
| return linkerAst; | |
| } else { | |
| throw new RuntimeException("Es gibt keinen linken Ast"); | |
| } | |
| } | |
| /** | |
| * @return Rechter Ast | |
| */ | |
| public BinaererBaum getRechterAst() { | |
| if (rechterAst != null) { | |
| return rechterAst; | |
| } else { | |
| throw new RuntimeException("Es gibt keinen rechten Ast"); | |
| } | |
| } | |
| // Docs werden automatisch generiert (oder sollten wenigstens...) | |
| public void setLinkerAst(BinaererBaum neuerAst) { | |
| linkerAst = neuerAst; | |
| } | |
| public void setRechterAst(BinaererBaum neuerAst) { | |
| rechterAst = neuerAst; | |
| } | |
| /** | |
| * Erstellt ein leerer Ast und fügt es links hinzu | |
| */ | |
| public void addLinkerAst() { // Mir fallt keinen kurzen deutschen Verb ein | |
| if (linkerAst == null) { | |
| // Wir haben noch keinen linken Ast, füge einen hinzu | |
| linkerAst = new BinaererBaum(); | |
| } | |
| else { | |
| // FIXME: | |
| // Was machen wir wenn es schon einen linken Ast gibt? | |
| // Wir können entweder es löschen und ersetzen, der neuen Ast weiter unten erstellen (rekursive), oder einen Fehler schicken | |
| // Löschen: | |
| //linkerAst = new BinaererBaum(); | |
| // Neuen Ast weiter unten erstellen: | |
| //linkerAst.addLinkerAst(); | |
| // Fehler schicken: | |
| throw new RuntimeException("Es gibt schon einen linken Ast."); | |
| } | |
| } | |
| /** | |
| * Erstellt ein leerer Ast und fügt es rechts hinzu | |
| */ | |
| public void addRechterAst() { // Mir fallt keinen kurzen deutschen Verb ein | |
| if (rechterAst == null) { | |
| // Wir haben noch keinen rechten Ast, füge einen hinzu | |
| rechterAst = new BinaererBaum(); | |
| } | |
| else { | |
| // FIXME: | |
| // Was machen wir wenn es schon einen rechten Ast gibt? | |
| // Wir können entweder es löschen und ersetzen, der neuen Ast weiter unten erstellen (rekursive), oder einen Fehler schicken | |
| // Löschen: | |
| //rechterAst = new BinaererBaum(); | |
| // Neuen Ast weiter unten erstellen: | |
| //rechterAst.addLinkerAst(); | |
| // Fehler schicken: | |
| throw new RuntimeException("Es gibt schon einen rechten Ast."); | |
| } | |
| } | |
| /** | |
| * @return Ob dieses Node leer ist | |
| */ | |
| public boolean leer() { | |
| if (inhalt == null) { | |
| return true; | |
| } else { | |
| return false; | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment