//BinaryTreeApplet //Zum Zeichnen eines Binaerbaums der Klasse "BinaryTree" //von Daniel Fader, Axel Rottmann import java.awt.*; import javax.swing.*; public class BinaryTreeApplet extends JPanel { //Konstruktor public BinaryTreeApplet(int w, int h, BinaryTree bt) { setBackground(new Color(128,255,0)); //Farbe chartreuse width = w; this.bt = bt; repaint(); } //Ueberladene Standardmethode //Wird mit "repaint();" aufgerufen //und zeichnet den Baum public void paint(Graphics g) { super.paint(g); drawTree(g, bt, 0, width, 1); } private void drawTree(Graphics g, BinaryTree b, int rangeLow, int rangeHigh, int level) { int offs = 5; g.drawString(Integer.toString(b.content), rangeLow+(rangeHigh-rangeLow)/2, level*30); if (b.left != null) { g.drawLine(rangeLow+(rangeHigh-rangeLow)/2, level*30+offs, rangeLow+((rangeLow+(rangeHigh-rangeLow)/2)-rangeLow)/2, ((level+1)*30)-15); drawTree(g, b.left, rangeLow, rangeLow+(rangeHigh-rangeLow)/2, level+1); } if (b.right != null) { g.drawLine(rangeLow+(rangeHigh-rangeLow)/2+offs, level*30+offs, (rangeLow+(rangeHigh-rangeLow)/2) + (rangeHigh-(rangeLow+(rangeHigh-rangeLow)/2))/2, ((level+1)*30)-15); drawTree(g, b.right, rangeLow+(rangeHigh-rangeLow)/2, rangeHigh, level+1); } } //Instanzvariablen BinaryTree bt; private int width; }