Applet Binäre Suchbaum darstellen

MesuckatInfo

Mitglied
Hallo,
Ich versuche ein Applet zu erstellen, welches die Pre-,Post-, und In-Order Traversierungen beinhaltet. Das Applet habe ich schon fertig. Ich weiß nun leider nicht, wie ich das hinbekomme die Hauptmethoden zu implementieren und brauche dringend Hilfe dabei... Bin nicht gut im Programmieren und brauche dementsprechend dringend Hilfe. Im Endeffekt will ich die Zahlen eingeben können und dann mir die Traveriserungsmethoden aussuchen können.. Danke im Voraus.. LG

Knoten.Java
Java:
public class Knoten
{
  protected Object Inhalt;
  private Knoten links, rechts;

  public Knoten()
  {
    Object Inhalt;
    links = rechts = null;
  }
  public Knoten(Object inhalt)
  {
    setInhalt(inhalt);
    links = rechts = null;
  }

  public void setInhalt(Object inhalt)
  {
    this.Inhalt = inhalt;
  }

  public Object getInhalt()
  {
    return this.Inhalt;
  }
 
  public void setLinks(Knoten links)
  {
    this.links = links;
  }
 
  public Knoten getLinks()
  {
    return links;
  }

  public void setRechts(Knoten rechts)
  {
    this.rechts = rechts;
  }

  public Knoten getRechts()
  {
    return rechts;
  }
}

BinSuchBaum

Java:
public class BinSuchBaum extends BinBaumPrototyp
{
  public BinSuchBaum (String ident)
  {
    super (ident);
  }
  public void fuegeEin(Object wert)
  {
    wurzel = fuegeEin(wurzel, wert);
  }
  public static void main (String [] args)
  {
 
  }
  private Knoten fuegeEin(Knoten aktuell, Object wert)
  {
    if(aktuell == null)
      aktuell = new Knoten(wert);
    else{
      if (wert.toString().compareTo(aktuell.getInhalt().toString())<0)
      {
        aktuell.setLinks(fuegeEin(aktuell.getLinks(),wert));
      }
      else
        aktuell.setRechts(fuegeEin(aktuell.getRechts(),wert));
    }
    return aktuell;
  }
}

BinBaumPrototyp

Java:
public abstract class BinBaumPrototyp
{
  // Anfang Attribute
  public Knoten wurzel;
  private String ident;
  // Ende Attribute
  public BinBaumPrototyp(String ident)
  {
  this.ident=ident;
  }
  // Anfang Methoden
  public abstract void fuegeEin(Object wert);
  public String inOrder()
  {
  return inOrder(wurzel);
  }
  private String inOrder(Knoten knoten)
  {
  String s = "";
 
  if (knoten!= null)
  {
    s += inOrder(knoten.getLinks());
    s += knoten.getInhalt().toString()+" ";
    s += inOrder(knoten.getRechts());
  }
  return s;
  }
  public String preOrder()
  {
  return preOrder(wurzel);
  }
  private String preOrder(Knoten knoten)
  {
  String s="";
 
  if (knoten!= null)
  {
    s += knoten.getInhalt().toString()+" ";
    s += inOrder(knoten.getLinks());
    s += inOrder(knoten.getRechts());
  } // end of if
  return s;
  }
  public String postOrder()
  {
  return postOrder(wurzel);
  }
  private String postOrder(Knoten knoten)
  {
  String s="";
 
  if (knoten!= null)
  {
    s += inOrder(knoten.getLinks());
    s += inOrder(knoten.getRechts());
    s += knoten.getInhalt().toString()+" ";
  } // end of if
  return s;
  }
  // Ende Methoden
}

Applet

Java:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.concurrent.TimeUnit;

public class BinBaumPrototypApplet extends Applet implements ActionListener
{
  Panel pnTitel = new Panel();
  Panel pnStart  = new Panel();
  Panel pnSecond  = new Panel();
  Panel pnThird  = new Panel();
  Panel  pnCopyright = new Panel();
  Button btIn = new Button ("In-Order");
  Button btPre = new Button ("Pre-Order");
  Button btPo = new Button ("Post-Order");
  Button btEingabe = new Button ("Einfügen");
 

  Label lbHeader = new Label("Binärer Suchbaum");
  Label lbCopyright = new Label(" von mir ----- Stand 17. Dezember 2018");
  Label lbEingabe = new Label ("Eingabe");
  Label lbAusgabe = new Label ("Ausgabe");
  Font ftHFont = new Font ("Dialog", Font.BOLD,50);
  Font ftCFont = new Font ("Dialog", Font.PLAIN,20);
 
  TextField tfName = new TextField (60);
  TextField tfKasse = new TextField (60);
  TextField tfNext = new TextField (60);
  TextField tfEingabe = new TextField (60);
  TextField tfAusgabe = new TextField (60);

 
  public void init()
  {
    resize(800,800);
    setLayout(new GridLayout(5,5));
    add(pnTitel);
    pnTitel.setBackground(Color.blue);
    pnTitel.add(lbHeader);
    lbHeader.setFont(ftHFont);
    lbHeader.setForeground(Color.white);
    add(pnCopyright);
    pnCopyright.setBackground(Color.blue);
    pnCopyright.add(lbCopyright);
    lbCopyright.setFont(ftCFont);
    lbCopyright.setForeground(Color.white);
    add(pnStart);
    add(pnSecond);
    add(pnThird);
    pnStart.add(lbEingabe);
    pnStart.add(tfEingabe);
    pnStart.add(btEingabe);
    btIn.addActionListener(this);
    btPre.addActionListener(this);
    btPo.addActionListener(this);
    pnSecond.add(btIn);
    pnSecond.add(btPre);
    pnSecond.add(btPo);
    pnThird.add(lbAusgabe);
    pnThird.add(tfAusgabe);
    add(pnCopyright);
    pnCopyright.setBackground(Color.blue);
    pnCopyright.add(lbCopyright);
    lbCopyright.setFont(ftCFont);
    lbCopyright.setForeground(Color.white);
  }
  public void actionPerformed(ActionEvent evt)
  {
    Object cmd = evt.getSource();
    if (cmd == btIn)
    {
    
    }
    if (cmd == btPre)
    {
    
    }
    if (cmd == btPo)
    {
    
    }
  }
}
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Sag mal, aus welchem Jahrtausend ist der Code?!?

Java:
  BinSuchBaum baum = new BinSuchBaum("");
...
    btEingabe.addActionListener(this);
...
  public void actionPerformed(ActionEvent evt)
  {
    Object cmd = evt.getSource();
    if (cmd == btEingabe) {
      baum.fuegeEin(tfEingabe.getText());
      tfEingabe.setText("");
    }
    if (cmd == btIn)
    {
      tfAusgabe.setText(baum.inOrder());
    }
...
Das ist zwar immer noch eine mittlere Katastrophe, aber zumindest kommt was dabei raus...
 

MesuckatInfo

Mitglied
Tja... wenn man's nicht anständig lernt... Danke trotzdem. Warum funktionieren die Traversierungen nun nicht?... Ich bin zu doof
 
Zuletzt bearbeitet:
X

Xyz1

Gast
welches die Pre-,Post-, und In-Order Traversierungen beinhaltet
Wer hat Dir gesagt dass es pre post und in-order gibt?

Wie soll der BinBaum repräsentiert werden?

Das Applet habe ich schon fertig
Applet? :confused: Ich dachte der Dino sei schon ausgestorben....

Wieso iss der komplette Code nicht generisiert?:oops:

will ich die Zahlen eingeben können und dann mir die Traveriserungsmethoden aussuchen können
Rekursive Traversierung? :eek:
 

mihe7

Top Contributor
@krgewb Applet, AWT-Komponenten, ActionListener mit Referenzvergleich. Fehlt nur noch, dass er handleEvent überschreibt :D

Nachtrag: das universelle Object hab ich noch ganz vergessen.
 

Neue Themen


Oben