16.3
Binärer Baum |
|
Ein
Binärbaum hat zunächst eine Wurzel aus ihr wächst ein Stamm mit zwei
Ästen. Man kann ihn zeichnen, wenn man die Methode zeichnen() in
TurtleDemo.java so abändert:
public void
zeichnen(){ Ändert man noch Titel und Größe des Bildes so erhält man die unten stehende Darstellung.
Einen richtigen binären Baum erhält man, wenn man an den Ästen den Vorgang mit z.B. halber Stamm, bzw. Astlänge wiederholt, die Enden der Äste also als Wurzeln der nächsten Generation sieht. Wir wollen dies rekursiv realisieren. Dazu müssen wir allerdings dafür sorgen, dass an den Enden, bevor der rekursive Aufruf erfolgt, die Turtle wieder in die Ausgangsrichtung zeigt. Als Abbruchbedingung für die Iteration wählen wir die Bedingung, dass die gezeichneten Strecken eine Mindestlänge haben.
|
|
Download: |
Wir implementieren eine eigene
Klasse BinaerBaum, die die
zeichne()-Methode enthält.
public class BinaerBaum{ |
|
Im QuellCode von
TurtleDemo.java,
den wir zu BinaerBaumDemo.java
umbenennen, wird im wesentlichen die Methode
actionPerformed(..)
neu implementiert. Während sie bisher lediglich die Methode
zeichnen()
aufrief, sorgt sie jetzt dafür, dass eine sog. Instanz von Turtle erzeugt
wird, diese auf dem Zeichenfeld platziert wird (hier: (200,280)),
und danach die wird die Methode
zeichne(..) der Klasse
BinaerBaum
für die Instanz binaerBaum
aufgerufen. Dabei wird die Turtle-Instanz und die Anfangsschrittlänge
übergeben. Die Übergabe der Turtle-Instanz ist deshalb nötig, weil die
Methode zeichne()
in BinaerBaum
auf die Methoden der Turtle-Instanz zugreifen soll.
|
![]()
|
|
Die ganze Klasse BinaerBaumDemo. java | Veränderungen gegenüber der Klasse TurtleDemo sind farblich gekennzeichnet: |
|
|
zu 16.4 | Sierpinski-Dreieck |
zur Startseite | www.pohlig.de (C) MPohlig 2003 |