Class HuffmanTree
- java.lang.Object
-
- HuffmanTree
-
public class HuffmanTree extends java.lang.Object
Autor
Dokumentiert von: Mert Can Özdemir
Modul: DAP1Dokumentation der Klasse HuffmanTree
Die Klasse HuffmanTree dient der Repräsentation eines aus Knoten bestehenden Baums mit (-> Mehrere Knoten werden zu einem Baum zusammen geflochten)
- einem Attribut für ein HuffmanTripple
- zwei Attributen für den linken und rechten Teilbaum zum Aufbau der Baumstruktur,
- geeigneten Konstruktoren, (Plural: Mehrere Konstruktoren)
- einer Methode zur Generierung der komprimierenden Kodierung für den Baum
- einer Methode zur Ausgabe der Kodierung eines Baums.Überlegungen zur Struktur von Huffman-Bäumen
- Jedes einzelne Zeichen bildet zunächst einen Baum mit genau einem Knoten: Hierfür wird ein geeigneter Konstruktor benötigt -> public HuffmanTree( HuffmanTriple t )
- Jeweils zwei Bäume werden unter einer neuen Wurzel zusammengesetzt: Auch hierfür wir ein geeigneter Konstruktor benötigt.
- Jeder innere Knoten eines Huffman-Baums besitzt immer genau zwei Nachfolgeknoten: Diese Eigenschaft kann beim bearbeiten eines Baums ausgenutzt werden.
- Die Blätter eines Huffman-Baums enthalten die zu kodierenden Zeichen
-
-
Constructor Summary
Constructors Constructor Description HuffmanTree()Konstruktor - HuffmanTree()HuffmanTree(HuffmanTree lc, HuffmanTree rc)Konstruktor - HuffmanTree( HuffmanTree lc, HuffmanTree rc )HuffmanTree(HuffmanTriple t)Konstruktor - HuffmanTree( HuffmanTriple t )
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intcompareTo(HuffmanTree other)int compareTo ( HuffmanTree other )voidgenerateCodes()void generateCodes()HuffmanTriplegetContent()HuffmanTriple getContent()booleanisEmpty()boolean isEmpty()booleanisLeaf()boolean isLeaf()voidshowCodes()void showCodes()
-
-
-
Constructor Detail
-
HuffmanTree
public HuffmanTree()
Konstruktor - HuffmanTree()
Erzeugt einen leeren Baum
-
HuffmanTree
public HuffmanTree(HuffmanTriple t)
Konstruktor - HuffmanTree( HuffmanTriple t )
Erzeugt einen Knoten Inhalt -> content wird auf das übergebene Argument gesetzt (=> content = t)
-
HuffmanTree
public HuffmanTree(HuffmanTree lc, HuffmanTree rc)
Konstruktor - HuffmanTree( HuffmanTree lc, HuffmanTree rc )
Erzeugt eine neue wurzel.
content = Der content hat kein Zeichen, und als quantity die Summe der quantity Werte, der beiden Kinder.
leftChild ist der Inhalt des HuffmanTree Objektes, dessen Content einen quantity Wert hat, der kleiner ist, als der vom rechten Teilbaum
rightChild ist der Inhalt des HuffmanTree Objektes, dessen Content einen quantity Wert hat, der größer ist, als der vom linken Teilbaum
-
-
Method Detail
-
isEmpty
public boolean isEmpty()
boolean isEmpty()
Identifiziert einen lehren Baum.
Falls der (Teil-)Baum leer, also der content, des aktuellen Knotens gleich null ist, wird true zurückgegeben.
Sonst wird false zurückgegeben
-
isLeaf
public boolean isLeaf()
boolean isLeaf()
Liefert true zurück, wenn der aktuelle Knoten ein Blatt ist, also content nicht null ist und die Nachfolger des Knotens leer sind
Wenn der aktuelle Knoten nicht die Bedingungen eines Blattes (1. content != null, 2. content von leftChild == null, 3. content von rightChild == null)
-
getContent
public HuffmanTriple getContent()
HuffmanTriple getContent()
Wenn der aktuelle Knoten nicht leer ist, wird das content (also das 'HuffmanTripple'-Objekt, dass der Inhalt 'content'-Variable ist) zurückgegeben.
Ist der aktuelle Knoten leer, wird eine Ausnahme geworfen, falls die Ausnahme nicht in einem try-catch-Block gefangen wird, bricht das Programm ab.
-
compareTo
public int compareTo(HuffmanTree other)
int compareTo ( HuffmanTree other )
Führt einen Vergleich auf der Grundlage der 'compareTo'-Methode aus der 'HuffmanTripple'-Klasse durch:
Auszug aus der 'compareTo'-Methode aus der Klasse HuffmanTripple
Vergleicht das aktuelle Objekt mit einem anderen HuffmanTripple Objekt (other)
Kommt das Zeichen des aktuellen Objektes häufiger vor als das Zeichen von other, wird eine Zahl größer als 0 zurück gegeben. -> quantity > other.quantity
Kommen die Zeichen gleich oft vor, wird 0 zurück gegeben. -> quantity = other.quantity
Kommt das Zeichen des aktuellen Objektes weniger häufiger vor als das Zeichen von other, wird eine Zahl kleiner als 0 zurück gegeben. -> quantity < other.quantity
-
generateCodes
public void generateCodes()
void generateCodes()
Erstellt die für die 'HuffmanTripple'-Objekte
(-> Dies ist für die Blätter, deren content (='HuffmanTripple'-Objekt) ja auch die Tokens enthält, natürlich am interessantesten)Die Methode 'generateCodes' arbeitet rekursiv auf dem Baum und betrachtet immer zuerst den linken und danach den rechten nachfolgenden Teilbaum.
-
showCodes
public void showCodes()
void showCodes()
Gibt die Kodierung für die Blätter aus
-
-