[Aufgabe] Huffman Bäume

Status
Nicht offen für weitere Antworten.
L

Liquid

Gast
Hi!

Bin ein Java Anfänger und hab hier einige Aufgaben zu lösen, so auch eine Huffman-Aufgabe.

Erstmal die Aufgabe:

Gegeben sei das folgende Interface BinaryNode:


interface BinaryNode

Object getValue();
// Liefert den dem Knoten zugeordneten Wert.

void setValue(Object);
// Setzt den dem Knoten zugeordneten Wert.

BinaryNode getLeftChild();
// Liefert das linke Kind des Knotens oder null, falls es nicht existiert.

void setLeftChild(BinaryNode);
// Setzt das linke Kind des Knotens auf den gegebenen Knoten (Teilbaum). Falls bereits ein linkes Kind eingetragen war, so wird dieses überschrieben. Der Wert „null“ als Parameter entfernt das linke Kind.

BinaryNode getRightChild();
// Liefert das rechte Kind des Knotens oder null, falls es nicht existiert.

void setRightChild(BinaryNode);
// Setzt das rechte Kind des Knotens auf den gegebenen Knoten (Teilbaum). Falls bereits ein rechtes Kind eingetragen war, so wird dieses überschrieben. Der Wert „null“ als Parameter entfernt das rechte Kind.

boolean isLeaf();
// Liefert true, falls der Knoten keine Nachfolger hat, false sonst.



Erstellen Sie eine Klasse BinaryNodeImpl, die die Methoden des Interfaces BinaryNode für Binärbäume implementiert. Die Klasse soll gleichermaßen als innerer Knoten wie als Blatt verwendet werden können und einen Standardkonstruktor besitzen.

Tja, und jetzt sitz ich hier und hab keine Ahnung, wie ich da anfangen muss und wie/wo ich das oben genannte Interpace implementieren muss.

Hoffe, es kann mir jemdand paar Tips/Ansätze für die Aufgabe geben.
 
B

Beni

Gast
Eine Klasse die Variablen für "value", "rightChild" und "leftChild" hat.

Code:
public class Node implements BinaryNode{
  private Object value;
  private BinaryNode leftChild, rightChild;

   ... // was halt noch so dazu gehört
}

Oder missverstehe ich dich?
 
U

ugh_bough

Gast
das "was sonst noch kommt" ist die implementierung jeder der oben geforderten methoden.
alle diese methoden arbeiten dann mit den drei instanzwariablen, die oben stehen
 
B

Beni

Gast
ja

Zum Beispiel das setValue:
Code:
public void setValue( Object newValue ){
  value = newValue;
}

Ganz einfach 8)
 
U

ugh_bough

Gast
kann nicht schlafen :cry:

datei BinaryNode.java
Code:
public interface BinaryNode {
    // Liefert den dem Knoten zugeordneten Wert. 
    Object getValue(); 
    
    // Setzt den dem Knoten zugeordneten Wert. 
    void setValue(Object value); 
    
    // Liefert das linke Kind des Knotens oder null, falls es nicht existiert. 
    BinaryNode getLeftChild(); 
    
    /** Setzt das linke Kind des Knotens auf den gegebenen Knoten (Teilbaum).
     * Falls bereits ein linkes Kind eingetragen war, so wird dieses überschrieben.
     * Der Wert „null“ als Parameter entfernt das linke Kind. 
     */
    void setLeftChild(BinaryNode binNode); 
    
    // Liefert das rechte Kind des Knotens oder null, falls es nicht existiert. 
    BinaryNode getRightChild(); 
    
    /** Setzt das rechte Kind des Knotens auf den gegebenen Knoten (Teilbaum).
     * Falls bereits ein rechtes Kind eingetragen war, so wird dieses überschrieben.
     * Der Wert „null“ als Parameter entfernt das rechte Kind. 
     */
    void setRightChild(BinaryNode binNode); 
    
    // Liefert true, falls der Knoten keine Nachfolger hat, false sonst. 
    boolean isLeaf(); 
}
datei Node.java
Code:
public class Node implements BinaryNode{ 

    private Object value; 
    private BinaryNode leftChild, rightChild; 
    
    // Konstruktor erstellt ein Blatt ohne Wert
    public Node() {
        this.value      = null;
        this.leftChild  = null;
        this.rightChild = null;
    }
    
    public Object getValue() {
        return this.value;
    }
    
    public void setValue(Object value) {
        this.value = value;
    }    

    public BinaryNode getLeftChild() {
        return this.leftChild;
    }  
    
    public void setLeftChild(BinaryNode binNode) {
        this.leftChild = binNode;
    }    

    public BinaryNode getRightChild() {
        return this.rightChild;
    }

    public void setRightChild(BinaryNode binNode) {
        this.rightChild = binNode;
    }

    public boolean isLeaf() {
        if (this.leftChild == null && this.rightChild == null) return true;
        return false;
    }
}

gruß
 
B

bygones

Gast
ugh_bough hat gesagt.:
Code:
public interface BinaryNode {
[.....]
    public boolean isLeaf() {
        if (this.leftChild == null && this.rightChild == null) return true;
        return false;
    }
}
oder gleich
Code:
public boolean isLeaf() {
         return (this.leftChild == null && this.rightChild == null);
    }
 
U

ugh_bough

Gast
stimmt. aber ich behaupte, dass meins für einen anfänger leichter verständlich ist ;)
 
L

Liquid

Gast
Hi!

Erstmal Danke für eure ganzen Tips!

@ugh_bough: ist das schon die ganze aufgabe, oder nur ein Ansatz zum vollenden? :?:
 
U

ugh_bough

Gast
wenn dein zitat oben die ganze aufgabenstellung war, dann ist das die ganze aufgabe
 
L

Liquid

Gast
ne, war nur der erste Teil der Aufgabe, der 2te Teil lautet wie folgt:

Erstellen Sie weiterhin eine Klasse BinaryTree, die folgende Baumalgorithmen auf einem auf BinaryNode aufbauenden Baum ausführt. Sie können dabei davon ausgehen, dass jeder innere Knoten im Baum zwei Nachfolger hat.

class BinaryTree

Implementiert mit Hilfe von BinaryNode einen Binärbaum.

BinaryTree(BinaryNode);
//Erzeugt einen BinaryTree für den durch BinaryNode gegebenen Baum.

BinaryNode getRoot();
//Liefert die Wurzel des Baumes.

int height();
//Bestimmt die Höhe des Baumes.
Die Höhe eines Blattes ist 0. Die Höhe eines Knotens ist das Maximum der Höhe der Teilbäume + 1.
Beispiel: Die Höhe des Baumes aus Abbildung 1 beträgt 2. Betrachtet man den Teilbaum, der „B“ als Wurzel hat, so ist dessen Höhe 1.

void visitPreOrder(Visitor);
//Durchläuft den Baum in pre-order Reihenfolge, d.h. es wird zunächst die Wurzel des aktuellen (Teil-)Baumes besucht, anschließend der linke und rechte Nachfolger. Dabei werden die Methoden arrive(), visit() und leave() wie unten beschrieben aufgerufen.

void visitInOrder(Visitor);
//Durchläuft den Baum in in-order Reihenfolge, d.h. es wird zunächst der linke Nachfolger, dann die Wurzel des aktuellen (Teil-)Baumes und zuletzt der rechte Nachfolger besucht..Dabei werden die Methoden arrive(), visit() und leave() wie unten beschrieben aufgerufen.

void visitPostOrder(Visitor);
//Durchläuft den Baum in post-order Reihenfolge, d.h. es werden zunächst der linke und rechte Nachfolger, und dann die Wurzel des aktuellen (Teil-)Baumes besucht. Dabei werden die Methoden arrive(), visit() und leave() wie unten beschrieben aufgerufen.

String toString();
//Liefert eine String-Repräsentation des Baumes. Der Baum soll so dargestellt werden, dass ein Knoten immer in ein Klammerpaar „()“ gefasst wird. Dieses enthält zunächst die String-Repräsentation des Knoten-Werts (value), gefolgt von eventuellen Nachfolgern, die ebenso repräsentiert werden (Dies entspricht dem Durchlauf mit dem PrintVisitor in pre-order Reihenfolge). Zu beachten ist, dass in den String-Repräsentationen der Werte evtl. auftretende Klammern durch die Zeichenfolge „\(„ bzw. „\)“ ersetzt werden müssen. Ebenso für das Zeichen „\“, das durch „\\“ ersetzt wird. Verwenden Sie keine Formatierungszeichen, wie Leerzeichen oder Zeilenumbrüche (es sei denn diese sind in den Knotenwerten enthalten)!

void setFromString(String);
//Setzt den Baum entsprechend der Definition im angegebenen String. Der String muss der Darstellung wie in toString() angegeben folgen. Falls nicht soll eine IllegalArgumentException geworfen werden. Für die Werte der Knoten sollen String-Objekte verwendet werden.

Hinweis: Verwenden Sie zur Implementierung einen temporären StringBuffer, aus dem sie die bereits verarbeiteten Zeichen (nach der Verarbeitung) entfernen.
 
B

bygones

Gast
*unbeliebtmach*

Dieses Forum ist da, um bei Problemen zu helfen (ABER man soll sich selbst Gedanken machen !!), NICHT Aufgaben zu lösen !!!
Ich schließe das Thema !!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jere58 Aufgabe zu Mustern Java Basics - Anfänger-Themen 1
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Mikejr Java Berg aufgabe Java Basics - Anfänger-Themen 6
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
T Informatik Studium Aufgabe Java Basics - Anfänger-Themen 4
T Aufgabe Informatik Studium Java Basics - Anfänger-Themen 10
I matrix aufgabe Java Basics - Anfänger-Themen 22
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
9 Aufgabe Bruttorechner Java Basics - Anfänger-Themen 14
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
StevenGG Aufgabe im Studium Java Basics - Anfänger-Themen 36
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
S Schulaufgabe - verstehe leider die Aufgabe nicht Java Basics - Anfänger-Themen 4
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
R Eclipse Aufgabe Java Basics - Anfänger-Themen 4
J OOP-Aufgabe Java Basics - Anfänger-Themen 15
Helix19 Informatik Grundkurs (Haus-)Aufgabe Java Basics - Anfänger-Themen 5
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
TimoN11 Java spezielle Suchprobleme - Aufgabe Java Basics - Anfänger-Themen 5
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
C Rechnungen-Aufgabe Java Basics - Anfänger-Themen 18
C Biene-Aufgabe Java Basics - Anfänger-Themen 2
K Algorithmen und Datenstrukturen Programmier Aufgabe Java Basics - Anfänger-Themen 10
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
B Methoden Ausgeben Aufgabe Java Basics - Anfänger-Themen 15
M Lösung Aufgabe - Java Programmiren lernen für Dummies Java Basics - Anfänger-Themen 11
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
F Aufgabe: Abstand von einem Punkt zu einem anderen Punkt Java Basics - Anfänger-Themen 10
T Aufgabe zum Verschlüsselungsalgorithmus Java Basics - Anfänger-Themen 11
J Erste Schritte Aufgabe Java Basics - Anfänger-Themen 24
T Methoden BinaryTree transformieren Aufgabe Java Basics - Anfänger-Themen 36
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
S Sortieralgorithmus - Aufgabe mit Lösungsidee Java Basics - Anfänger-Themen 20
A Aufgabe: Gleitkommazahlen Java Basics - Anfänger-Themen 3
A Java-Programmierungs Aufgabe Java Basics - Anfänger-Themen 2
U Aufgabe zu Kontrollstrukturen Java Basics - Anfänger-Themen 8
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
J Aufgabe als Feuertaufe Java Basics - Anfänger-Themen 8
S Unbedingte hilfe bei Java Aufgabe [Schleife / Zinsrechnung] Java Basics - Anfänger-Themen 14
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
H aufgabe 4 Java Basics - Anfänger-Themen 297
M Hilfe bei Projektorientierungs-Aufgabe !! Java Basics - Anfänger-Themen 3
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
H java aufgabe Java Basics - Anfänger-Themen 7
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
H was verlangt die aufgabe ? Java Basics - Anfänger-Themen 10
H java aufgabe Java Basics - Anfänger-Themen 68
H java aufgabe Java Basics - Anfänger-Themen 25
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
R Java Aufgabe (Teilbarkeit) Java Basics - Anfänger-Themen 7
H java aufgabe Java Basics - Anfänger-Themen 44
H java aufgabe Java Basics - Anfänger-Themen 7
H java string aufgabe Java Basics - Anfänger-Themen 10
H array aufgabe Java Basics - Anfänger-Themen 13
D Erste Schritte Lösen dieser Aufgabe, Hilfe! Java Basics - Anfänger-Themen 12
H aufgabe Java Basics - Anfänger-Themen 9
H lösung aufgabe Java Basics - Anfänger-Themen 12
S Hilfe für Aufgabe Java Basics - Anfänger-Themen 4
H java online aufgabe Java Basics - Anfänger-Themen 4
H Array aufgabe Java Basics - Anfänger-Themen 7
H oop aufgabe probe kalusur Java Basics - Anfänger-Themen 11
H oop aufgabe Java Basics - Anfänger-Themen 19
H JAVA AUFGABE Java Basics - Anfänger-Themen 7
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
J Problem bei Aufgabe "Geldstückelung" Java Basics - Anfänger-Themen 5
P Problem bei Java-Aufgabe Java Basics - Anfänger-Themen 12
B Verständnis Frage zu der Aufgabe Java Basics - Anfänger-Themen 30

Ähnliche Java Themen

Neue Themen


Oben