binaerbaum implementieren

Status
Nicht offen für weitere Antworten.
M

measure

Gast
Hallo zusammen,
ich hoffe ihr könnt mir helfen, denn ich bin langsam am verzweifeln,
bin Mathematikerin mit Nebenfach Informatik, und wir besprechen in den Übungen nie unsere Aufgaben, müssen das Programm als Datei abgeben und können dann nur nachschauen, wie viel Punkte wir insgesamt von wie vielen haben, aber nicht was wir falsch gemacht haben, und deshalb schließen sich die lücken, die sich seit beginn entwickelt haben auch kaum. Ich habe mir schon etliche Bücher ausgeliehen und auch 2 gekauft, die waren zwar fürs grobe ganz gut, aber wenn ich n programm schreiben soll, helfen mir die nicht weiter.

Wir sollen folgendes Interface implementieren, und ich scheiter wie bei den meisten Programmen ganz am Anfang.
Also der erste Konstruktor ist klar, und bis zu "public BinaerbaumInterface<Type> right()" weiß ich einfach nicht weiter.
Mit dem, was danach kommt, kann ich dann schon klar, wenn ich mal die Objekte geschaffen hab, mit denen ich dann was machen muss!
(Bin auch dankbar für jeden Tip, wie ich das lernen kann, was ich am Anfang zu tun hab)

public interface BinaerbaumInterface<Type> {

/**
* Konstruktor, zum Erzeugen eines leeren Binaerbaumes
*/
/*public BinaerbaumInterface();*/

/**
* Konstruktor, zum Erzeugen eines Binaerbaumes
* @param left linker Ast des neuen Baumes
* @param value zugeordneter Wert neuen Knotens
* @param right rechter Ast des neuen Baumes
*/
/*public BinaerbaumInterface(BinaerbaumInterface<Type> left,
* Type value, BinaerbaumInterface<Type> right);*/

/**
* @return den linken Ast des Baumes
*/
public BinaerbaumInterface<Type> left();
/**
* @return den rechten Ast des Baumes
*/
public BinaerbaumInterface<Type> right();
/**
* @return den der Wurzel zugeordneten Wert
*/
public Type value();
/**
* @return <code>true</code>, wenn der Baum leer ist
*/
public boolean empty();

/**
* Diese Methode soll rekursiv jeden Knoten des Binaerbaums besuchen, und dabei
* die Tiefe und das zugeordnete Objekt mittels System.out.println() ausgegeben.
*
* @param tiefe die bisher erreichte Tiefe im Baum. Bei der Wurzel wird dies also
* mit travers(0) aufgerufen
*
*/
public void traverse(int tiefe);

}
 
B

burgfried

Gast
könntest du bitte konkrete fragen stellen, damit ich dir besser weiterhelfen kann?

ich weiß ungefähr, was du bei dieser übung machen musst, allerdings weiß ich nicht, wo ich dir jetzt genau weiterhelfen muss.
 
M

measure

Gast
wie krieg ich den zweiten konstruktor? also wie erzeuge ich jetzt einen linken bzw.rechten Ast?
 
M

MrChance

Gast
linker und/oder rechter "Ast" ist ein Teilbaum - und ein Teilbaum ist auch ein Baum. D.h. es ist der gleiche Konstruktor.
 
M

MrChance

Gast
----
...aber soweit ich weiss hat ein Interface gar keinen Konstruktor.
 
B

burgfried

Gast
ja du musst halt einmal eine klasse schreiben, die dieses interface implementiert und die beiden konstruktoren realisiert.

zb.

Code:
public class BinaryTree<Type> implements BinaerbaumInterface<Type> {

//member variables
BinaryTree<Type> m_pLeft, m_pRight;
Type m_pValue; 

public BinaryTree() {
m_pLeft = null;
m_pRight = null;
m_pValue = null;

} 


public BinaryTree(BinaryTree<Type> left, Type value, BinaryTree<Type> right) {
m_pLeft = left;
m_pRight = right;
m_pValue = value;


}


 public boolean empty() {
  return ((m_pLeft == null) && (m_pRight == null) && (m_pValue == null));
}

...
}

die konstruktoren setzen lediglich die drei member variablen.

die anderen methoden geben zurück, welche settings der binärbaumknoten hat.

ich hab das jetzt nur mal schematisch aufgeschrieben. du musst dich noch mit der generezität spielen, weil das habe ich nicht so intus, wie es da verlangt wird.
 
M

measure

Gast
Oh vielen Dank, Burgfried. Du weißt gar nicht wie gut das tut, wenn einem mal jemand weiterhilft.
Denn es ist ja nicht so, dass ich mich nicht damit auseinandersetzen würde, aber ich komme oft nicht alleine weiter.

Also ich habe jetzt folgendes:

Code:
import java.io.*;

public class Binaerbaum<Type> implements BinaerbaumInterface<Type> {
    
    Binaerbaum<Type> bin_left;
    Binaerbaum<Type> bin_right;
    Type bin_value;
    

    public Binaerbaum<Type>() {                                         // Fehlermeldung identifier expected
        Binaerbaum<Type> bin = new Binaerbaum<Type>();
    }

    public Binaerbaum<Type>(final Binaerbaum<Type> left, final Type value, final Binaerbaum<Type> right) {
        Binaerbaum<Type> bin_left = new Binaerbaum<Type>();
        Binaerbaum<Type> bin_right = new Binaerbaum<Type>();
        bin_value = null;
    }

    public Binaerbaum<Type> left() {

    }

    public Binaerbaum<Type> right() {

    }

    public Type value() {
      
    }

    public boolean empty() {
        if(bin_left == null && bin_right == null && bin_value == null )   return true;
        else   return true;
    }

    public void traverse(int tiefe) {
        System.out.println("");
    }
    ;
}

Warum krieg ich in Zeile 10 die Fehlermeldung identifier expected?

Und warum musste ich in der vorletzten Zeile ein ";" machen? Das ergibt für mich gar keinen Sinn, aber der Compiler hat erst aufgehört zu meckern, bis ichs gemacht hab.

Wie numeriere ich jetzt die Elemente?
Also ich hab mir überlegt:

Wurzel(Element #1, also 2^0+0) tiefe = 0

#2 : 2^1+0 #3: 2^1+1 tiefe = 1

#4 : 2^2+0 #5 : 2^2+1 #6 : 2^2+2 #7 : 2^2+3 tiefe = 2


also pro "Zeile" immer: (2^tiefe)+0, ...., (2^tiefe)+((2^tiefe)-1)

Aber wie schreibe ich das als Code???

Wie schreibe ich die values in die Elemente?
 
B

burgfried

Gast
ich habe folgende fragen an dich:
-) musst du nur eine klasse implementieren, die das interface erfüllt? (weil das interface an und für sich macht gar keinen sinn, wenn du nicht unterschiedliche arten von binärbäumen implementierst.)

-) sagt dir der begriff generizität etwas? (wenn nein, dann solltest du vielleicht bei deiner aufgabe nur eine art von binärbaum der einen spezifischen Typ wie beispielsweise String übernimmt.) Wenn du aber wirklich eine generische klasse schreiben sollst, dann suche dir bitte auch ein tutorial über generizität aus dem internet.


ich habe hier einmal eine generische lösung implementiert.

Code:
import java.io.*;

public class Binaerbaum<E> {

    Binaerbaum<E> bin_left;
    Binaerbaum<E> bin_right;
    E bin_value;


    public Binaerbaum() {                                         // Fehlermeldung identifier expected
        bin_left = null;
        bin_right = null;
        bin_value = null;
    }

    public Binaerbaum(Binaerbaum<E> left, E element, Binaerbaum<E> right) {
        bin_left = left;
        bin_right = right;
        bin_value = element;
    }

    public Binaerbaum<E> left() {
      return bin_left;
    }

    public Binaerbaum<E> right() {
      return bin_right;
    }

    public E value() {
      return bin_value;
    }

    public boolean empty() {
        return ((bin_left == null) && (bin_right == null) && (bin_value == null));
    }

    public void traverse(int tiefe) {
        System.out.println("");
    }

}

ein paar dinge zur erklärung.

-) die fehlermeldung kam, weil ich beim constructor <Type> dazugeschrieben habe. das war falsch.
-) E ist ein stellvertreter für ein beliebiges Objekt. Zum Beispiel String. Dh überall wo jetzt ein E steht könntest Du ein String objekt verwenden. Das ist das konzept von generezität. du brauchst die klasse nur einmal implementieren, kannst aber jederzeit verschiedene objekte verwenden. natürlich auch selbst definierte.
-) bei return ((bin_left == null) && (bin_right == null) && (bin_value == null)); brauchst du keine if abfrage verwenden. der gesamte ausdruck ergibt entweder wahr oder falsch. das zusätzlich noch für eine if abfrage zu verwenden, verkompliziert es nur.
-) die konstruktoren sind nur da um die member variablen zu setzen. du darfst da drinnen nicht nochmal einen konstruktor aufrufen.
-) wenn du member variablen setzen willst, darfst du die variablen nicht nochmals definieren:
wenn du schreibst
Binaerbaum bin_left = left;
definierst du in der methode selbst eine lokale variable namens bin_left. d.h. du setzt nicht die member variable bin_left. bitte pass auf so etwas auf.
 
B

burgfried

Gast
ein tutorial für generizität findest du unter
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf

wenn du die tiefe mit ganzzahligen werten versiehst solltest die variable bin_value vom typ int sein und keinen generischen klassentyp haben.

zusätzlich solltest du pro knoten die tiefe speichern, in der er sich befindet.

aber irgendwie ist das für mich ziemlich konfus und ich verstehe die aufgabenstellung immer noch nicht ganz. gibt es da keine offizielle angabe, die man sich im netz anschauen kann?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J binaerbaum aus listen machen Java Basics - Anfänger-Themen 8
J JTextPane "text/html" grafik implementieren... Java Basics - Anfänger-Themen 9
Maxq Klassen Actionen in Button implementieren Java Basics - Anfänger-Themen 6
A LinkedList implementieren Java Basics - Anfänger-Themen 32
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
P9cman Ampel in Java implementieren Java Basics - Anfänger-Themen 3
districon Generics implementieren Java Basics - Anfänger-Themen 2
W UML Diagramm implementieren Java Basics - Anfänger-Themen 2
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
R Taxistand Implementieren Java Basics - Anfänger-Themen 1
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Gaudimagspam BMI in Java implementieren Java Basics - Anfänger-Themen 38
T Methode implementieren Java Basics - Anfänger-Themen 21
R Implementieren einer iterativen und rekursiven Klassenmethode. Java Basics - Anfänger-Themen 1
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
J alternierendes Probing-Verfahren für Hash-Tabellen implementieren Java Basics - Anfänger-Themen 0
B UML-Klassendiagram get und set implementieren Java Basics - Anfänger-Themen 2
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
E Klassen implementieren Java Basics - Anfänger-Themen 94
S Tokenizer selbst implementieren Java Basics - Anfänger-Themen 1
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
M WindowStateListener selbst implementieren Java Basics - Anfänger-Themen 8
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
F Kindklassen sollen Ihre Methoden selbst implementieren Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
N Stacks und Queues Implementieren Java Basics - Anfänger-Themen 2
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
Shizmo Methoden Formel besser implementieren Java Basics - Anfänger-Themen 8
X Polynome implementieren Java Basics - Anfänger-Themen 3
O Methoden implementieren, Sichtbarkeiten, Brüche Java Basics - Anfänger-Themen 104
D Erste Schritte Weitere Befehle implementieren Java Basics - Anfänger-Themen 27
D Erste Schritte Befehl back implementieren Java Basics - Anfänger-Themen 18
B Formel in Java implementieren Java Basics - Anfänger-Themen 4
M Suchbaum implementieren Java Basics - Anfänger-Themen 8
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
C Zyklisch verkette Liste - Pop() methode implementieren Java Basics - Anfänger-Themen 2
N Eigene Stream Methoden implementieren Java Basics - Anfänger-Themen 3
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
K Klassen implementieren Java Basics - Anfänger-Themen 7
W Neue Klassenmethode implementieren.. Java Basics - Anfänger-Themen 6
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
C UML Diagramm in Java implementieren-Korrektur Java Basics - Anfänger-Themen 8
T Equal Methode implementieren Java Basics - Anfänger-Themen 22
C ZahlenMuster implementieren Java Basics - Anfänger-Themen 1
C Alte Klausuraufgabe - UML in Java implementieren Java Basics - Anfänger-Themen 1
D Erste Schritte spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 1
D spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 5
J Builder Pattern implementieren Java Basics - Anfänger-Themen 3
B Sortierte Liste implementieren Java Basics - Anfänger-Themen 3
L Liste mittels Stack implementieren Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
D Weihnachtsbaum implementieren gescheitert. Java Basics - Anfänger-Themen 2
D Tannenbaum implementieren gescheitert Java Basics - Anfänger-Themen 1
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
F ArrayListen auf anderer Klasse implementieren Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
D Methoden Implementieren von einer Zoomfunktion innerhalb eines JPanels mit null-Layoutmanager Java Basics - Anfänger-Themen 1
G Erbklasse verpflichten Methode zu implementieren Java Basics - Anfänger-Themen 3
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
G einfache Leet-Übersetzung implementieren und benutzen Java Basics - Anfänger-Themen 14
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
D Exception selbst Implementieren Java Basics - Anfänger-Themen 1
T QuickSort implementieren Java Basics - Anfänger-Themen 5
J Konstruktor implementieren, zahl 0 repräsentieren Java Basics - Anfänger-Themen 4
C Frage zum Kartenspiel implementieren Java Basics - Anfänger-Themen 9
shiroX OOP Java Funktion implementieren Java Basics - Anfänger-Themen 3
T Ampel implementieren Java Basics - Anfänger-Themen 12
S Interface Implementieren von Methoden aus einer Klasse in eine GUI Java Basics - Anfänger-Themen 6
H Methoden Implementieren "Drücken Sie eine beliebige Taste" Java Basics - Anfänger-Themen 5
G ActionListener implementieren Java Basics - Anfänger-Themen 12
G Szenario implementieren Java Basics - Anfänger-Themen 7
T Methode Implementieren Java Basics - Anfänger-Themen 15
I Taschenrechner - Methoden implementieren Java Basics - Anfänger-Themen 5
T Interface implementieren mit Abstrakten Typen? Java Basics - Anfänger-Themen 4
T Interface Implementieren Java Basics - Anfänger-Themen 5
T Methoden Wie compareTo() Methode implementieren? Java Basics - Anfänger-Themen 9
D Artikel-Suche implementieren Java Basics - Anfänger-Themen 7
S Implementieren? Java Basics - Anfänger-Themen 9
R Alle Klassen ermitteln, die Interface implementieren / Reflection Java Basics - Anfänger-Themen 51
P einen binärbaum implementieren Java Basics - Anfänger-Themen 4
K Terminplaner implementieren Java Basics - Anfänger-Themen 49
F JSlider korrekt implementieren Java Basics - Anfänger-Themen 19
D Wie Iterator Remove implementieren? Java Basics - Anfänger-Themen 11
U Automatenprüfung in Java implementieren — String Vergleich klappt nicht Java Basics - Anfänger-Themen 40
V Hilfe beim implementieren von Iterator Java Basics - Anfänger-Themen 5
T Vorbereitung für das Implementieren von Programmen Java Basics - Anfänger-Themen 3
B PriorityQueue im dijkstra Algorithmus implementieren Java Basics - Anfänger-Themen 4
H Automaten implementieren Java Basics - Anfänger-Themen 9
M Methoden implementieren? Java Basics - Anfänger-Themen 8
S Klasse als Attribut implementieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben