Class HuffmanTree


  • public class HuffmanTree
    extends java.lang.Object

    Autor

    Dokumentiert von: Mert Can Özdemir
    Modul: DAP1

    Dokumentation 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
      int compareTo​(HuffmanTree other)
      int compareTo ( HuffmanTree other )
      void generateCodes()
      void generateCodes()
      HuffmanTriple getContent()
      HuffmanTriple getContent()
      boolean isEmpty()
      boolean isEmpty()
      boolean isLeaf()
      boolean isLeaf()
      void showCodes()
      void showCodes()
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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