Generischer Binärbaum (compareTo Frage)

puelo

Mitglied
Hallo,

ich habe folgende Aufgabenstellung:

Verallgemeinern Sie Ihre Implementierung des Binarbaums IntBinaryTree, indem Sie eine neue
generische Klasse GenericBinaryTree programmieren, die beliebige Referenztypen T als Knotenwerte
zulasst.
Um beliebige Referenzen T in einen Binarbaum einfugen zu konnen, muss es eine Ordnung auf
Instanzen dieses Typs geben, d.h. beliebige Instanzen von T müssen miteinander vergleichbar sein.
Stellen Sie also sicher, dass nur solche T erlaubt sind, die das Interface Comparable<T> implementieren
und benutzen Sie beim Einfugen in Ihren generischen Baum die entsprechende Vergleichsmethode
dieses Interfaces, um zu entscheiden, ob Sie in den linken oder rechten Teilbaum einfugen
mussen.

Ich habe jetzt folgendes programmiert:

Java:
public class GenericBinaryTree<T> implements Comparable<T>{
    public T value;
    public GenericBinaryTree<T> rightNode;
    public GenericBinaryTree<T> leftNode;
    
    public GenericBinaryTree (T value){
        this.value = value;
    }

    @Override
    public int compareTo(T o){
        return this.compareTo(o);
    }
    public void insert (T newValue){
        if(newValue instanceof Comparable){
            if(compareTo(newValue) < 0){
                if(rightNode != null){
                    rightNode.insert(newValue);
                }else{
                    rightNode = new GenericBinaryTree<T>(newValue);
                }
            }else{
            if(leftNode != null){
                leftNode.insert(newValue);
            }else{
                leftNode = new GenericBinaryTree<T>(newValue);
            }
            }
        }else{
            System.out.println("newValue does not implement Comparable");
        }
        
    }

    @Override
    public String toString(){
        String bTreeString = "";
        if(leftNode != null){
            bTreeString += leftNode.toString();
        }
            bTreeString += this.value+", ";
        if(rightNode != null){
            bTreeString += rightNode.toString();
        }
            return bTreeString;

    }
}

Nun wollte ich wissen, ob es 1. eine andere / bessere Möglichkeit gibt, wie in der Angabe gefordert, sicher zu stellen, dass T das Interface Comparable implementiert und 2. die implementierung von compareTo so in Ordnung ist.
Danke für jede Info!
 

dayaftereh

Top Contributor
Hey, du kannst folgendes tuhen:
Java:
public class Test<T extends Comparable<T>> {
	public int test(T e, T e2){
		return e.compareTo(e2);
	}
}

Jetzt hast du sichergestellt das T Comparable sein muss.
 

Michael...

Top Contributor
1. Ich habe nirgends gelesen, dass die Tree Klasse Comparable implementieren soll, es soll nur sichergestellt werden, das T Comparable implementiert.
2. würde ein Aufruf Deiner (nicht notwendigen) compareTo Methode zu einer Endlosschleife und somit zu einem StackOverflow führen.
 

puelo

Mitglied
Danke für die Tipps erstmal.
Hier der überarbeitete Code:

Java:
public class GenericBinaryTree <T extends Comparable<T>> {
    public T value;
    public GenericBinaryTree<T> rightNode;
    public GenericBinaryTree<T> leftNode;
    
    public GenericBinaryTree (T value){
        this.value = value;
    }

    public int compareThem(T o, T o2){
        return o2.compareTo(o);
    }
    public void insert (T newValue){
            if(compareThem(newValue, this.value) < 0){
                
                if(rightNode != null){
                    rightNode.insert(newValue);
                }else{
                    rightNode = new GenericBinaryTree<T>(newValue);
                }
            }else{
            if(leftNode != null){
                leftNode.insert(newValue);
            }else{
                leftNode = new GenericBinaryTree<T>(newValue);
            }
            
        }
        
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Generischer Binärbaum - löschen Java Basics - Anfänger-Themen 1
G generischer binärbaum Java Basics - Anfänger-Themen 9
S Generischer Bubblesort Java Basics - Anfänger-Themen 19
M Generischer Array erstellen Java Basics - Anfänger-Themen 2
N Enum als generischer Typ Java Basics - Anfänger-Themen 4
S Frage zu generischer Liste Java Basics - Anfänger-Themen 3
P Liste sortieren verschiedener generischer Typen Java Basics - Anfänger-Themen 4
S ClassCastException bei generischer Klasse Java Basics - Anfänger-Themen 5
M Collections Iterator und generischer Baum Java Basics - Anfänger-Themen 0
C Anwendung generischer Typparamter auf ArrayList Java Basics - Anfänger-Themen 2
J Generischer Typ - Array Java Basics - Anfänger-Themen 9
T Generisches Feld in nicht-generischer Klasse möglich? Java Basics - Anfänger-Themen 5
Helgon Polymorphie Generischer Methodenkopf - Erklärung Java Basics - Anfänger-Themen 3
E Generischer Methode ein Array übergeben Java Basics - Anfänger-Themen 3
J Frage zu generischer Klasse und Casten Java Basics - Anfänger-Themen 14
S generischer swap Java Basics - Anfänger-Themen 22
O Kleines Problem mit Konstruktor mit Parametern aus generischer Klasse...oder so ;) Java Basics - Anfänger-Themen 2
D Generischer Datentyp Java Basics - Anfänger-Themen 2
F (Generischer) Adapter Java Basics - Anfänger-Themen 8
T Generics: Generischer Konstruktor-Aufruf? Java Basics - Anfänger-Themen 17
S Frage zu generischer ArrayList Java Basics - Anfänger-Themen 6
X Rekursion & Generischer Datentyp Java Basics - Anfänger-Themen 11
G Subtyp in generischer Klasse Java Basics - Anfänger-Themen 7
E Generischer Datentyp und Arrays Java Basics - Anfänger-Themen 3
T generischer stack Java Basics - Anfänger-Themen 3
ven000m Unterschied zwischen: ADT & generischer Programmierung Java Basics - Anfänger-Themen 2
Y Wie greift man auf die Knoten in einem Binärbaum zu? Java Basics - Anfänger-Themen 5
T Binärbaum-Suche Implementation Java Basics - Anfänger-Themen 6
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
D Binärbaum Blätter finden und Ausgeben Java Basics - Anfänger-Themen 22
O BinärBaum einfügen Java Basics - Anfänger-Themen 13
E Erste Schritte Testklasse Binärbaum Java Basics - Anfänger-Themen 10
void19 Methoden Binärbaum Inorder Traversierung in Array speichern Java Basics - Anfänger-Themen 1
A Größten Eintrag aus Binärbaum löschen Java Basics - Anfänger-Themen 4
L Ganzen BinärBaum ausgeben? Java Basics - Anfänger-Themen 3
L Binärbaum (Stammbaum) Java Basics - Anfänger-Themen 8
S Binärbaum in PreOrder in ArrayList speichern Java Basics - Anfänger-Themen 0
J Methoden Binärbaum, Traversierung in Array speichern Java Basics - Anfänger-Themen 18
K BinärBaum Java Basics - Anfänger-Themen 4
J Max. Anzahl von Knoten im Binärbaum Java Basics - Anfänger-Themen 3
M Werte der Knoten in Binärbaum addieren (iterativ) Java Basics - Anfänger-Themen 6
C Binärbaum mit grafischer Ausgabe Java Basics - Anfänger-Themen 0
J Binärbaum formatiert ausgeben. Java Basics - Anfänger-Themen 7
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
W Größtes Element im unsortierten Binärbaum Java Basics - Anfänger-Themen 7
M Binärbaum mit parent-Zeigern Java Basics - Anfänger-Themen 1
B Methoden BinärBaum als String Knoten löschen Java Basics - Anfänger-Themen 5
S Binärbaum kopieren Java Basics - Anfänger-Themen 6
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
D Binärbaum Suche Java Basics - Anfänger-Themen 5
D Binärbaum probleme Java Basics - Anfänger-Themen 4
P Binärbaum - Primärschlüssel Java Basics - Anfänger-Themen 3
X Fehler Binärbaum Java Basics - Anfänger-Themen 6
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
N Binärbaum/Implementierung Java Basics - Anfänger-Themen 9
P Binärbaum Ordnungsproblem Java Basics - Anfänger-Themen 8
P einen binärbaum implementieren Java Basics - Anfänger-Themen 4
M Binärbaum - Problem bei Knoten anhängen / löschen Java Basics - Anfänger-Themen 5
B Binärbaum höhe herausfinden Java Basics - Anfänger-Themen 12
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
S Klassen Aufgabe: Binärbaum überprüfen Java Basics - Anfänger-Themen 16
S Binärbaum Java Basics - Anfänger-Themen 9
S Variable Parameterliste in Binärbaum Java Basics - Anfänger-Themen 2
N BinärBaum Hilfestellung Java Basics - Anfänger-Themen 8
S Binärbaum prüfen, ob sortiert oder unsortiert Java Basics - Anfänger-Themen 6
W Binärbaum zahlen addieren Java Basics - Anfänger-Themen 7
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
S Binärbaum Java Basics - Anfänger-Themen 7
I Binärbaum Java Basics - Anfänger-Themen 5
S Bitte um Hilfe beim unsortierten Binärbaum!! Java Basics - Anfänger-Themen 6
J Binärbaum getSize Java Basics - Anfänger-Themen 4
P Fragen zum Binärbaum Java Basics - Anfänger-Themen 3
S Binärbaum implementieren Java Basics - Anfänger-Themen 6
K Tiefe im Binärbaum Java Basics - Anfänger-Themen 2
G Binärbaum und Wrapperklassen Java Basics - Anfänger-Themen 6
F Binärbaum codieren. Codeproblem! Java Basics - Anfänger-Themen 4
D rekursion im binärbaum Java Basics - Anfänger-Themen 11
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
T Binärbaum - noch ein "klitzekleiner Fehler" Java Basics - Anfänger-Themen 4
B Binärbaum auf Vollständigkeit prüfen Java Basics - Anfänger-Themen 15
G Frage zur einfügen in einem Binärbaum Java Basics - Anfänger-Themen 21
G Binärbaum grafisch darstellen Java Basics - Anfänger-Themen 4
Cassy3 Generics - CompareTo Java Basics - Anfänger-Themen 21
J compareTo()- und equals-Methode Java Basics - Anfänger-Themen 3
X compareTo Methode wird ignoriert Java Basics - Anfänger-Themen 7
O compareTo nach mehreren Kriterien Java Basics - Anfänger-Themen 13
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
B Methoden compare() und compareTo() Java Basics - Anfänger-Themen 1
P compareTo() Java Basics - Anfänger-Themen 3
C compareTo verwenden Java Basics - Anfänger-Themen 2
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
J Sortier alternativen mit der compareTo Methode? Java Basics - Anfänger-Themen 6
J TreeSet mit compareTo sortieren Java Basics - Anfänger-Themen 2
K compareTo(String arg) überschreiben Java Basics - Anfänger-Themen 4
N Compiler-Fehler Comparable / compareTo implementierung Java Basics - Anfänger-Themen 2
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
S compareTo() und equals() Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben