/** * Beschreiben Sie hier die Klasse binärbaum. * * @author (Ihr Name) * @version (eine Versionsnummer oder ein Datum) */ import java.util.ArrayList; public class Binärbaum { //Attribute public Object wert; public Binärbaum links; public Binärbaum rechts; //Konstruktoren //Konstruktoren für ein Blatt //Konstruktor für inneren Knoten Node Final; public void einfügen(int [] Anzahl){ //alle Nodes werden abgespeichert ArrayList m = new ArrayList(); for(int i =0 ; i= 1){ //Node wird angelegt Node n = new Node((char)(i + 65), Anzahl[i]) ; m.add(n); } } //Sortieren von den Werten while(m.size() > 1){ //Minimum finden int Minimum = Minimum(m); //ermittelt das Minimum für die Festlegung des rechten Knotens Node n1 = m.get(Minimum); //entfernt das aktuelle Minimum m.remove(Minimum); int Minimum2 = Minimum(m); //ermittelt das Minimum für die Festlegung des linken Knotens Node n2 = m.get(Minimum2); //entfernt das aktuelle Minimum m.remove(Minimum2); Node neu = new Node(' ', n1.Anzahl + n2.Anzahl); neu.links = n1; neu.rechts= n2; m.add(neu); } Final = m.get(0); } public void ausgeben(Node n, String i){ if(n.links != null){ //gibt Weertee aus und erstellt dabei Binärcode ausgeben(n.links, i + "0"); ausgeben(n.rechts, i + "1"); }else{ System.out.println(n.wert + " : " + i+ " Anzahl:" + n.Anzahl); n.Binärcode = i; } } public void codieren(String text){ for(int i = 0; i l){ //setzt temporäres Minimum auf der ersten Stelle der ArrayList int minindex = 0; for(int i = 0; il.get(i).Anzahl){ minindex = i; } } return minindex; } }