Ausnahme im Thread "main" java.lang.ClassCastException:

stimmen
0

Ich habe einen Treiber wurde mit einem meiner Datenstrukturen (binärer Suchbaum) zu testen, und ich habe in dieser Frage kommen. -Es passiert, wenn ich mehr als zwei Objekte in die bst einfügen -Was ich zu tun versucht: I 4 Objekte in den Baum am Einfügen, dann 2 Objekte ich lösche und dann so meine Methode find Druck heraus, dass es, ob angezeigt oder es fand nicht die Objekte I beantragen. zum Beispiel:

BinarySearchTree2<Integer> theData1 = new BinarySearchTree2<Integer>();
     long start1 = System.currentTimeMillis();  
   theData1.insert(c1);
  theData1.insert(c2);
  theData1.insert(c3);
    theData1.delete(c2);
    System.out.println(theData1.find(c1));
    System.out.println(theData1.find(c2));
    System.out.println(theData1.find(c3));
    System.out.println(theData1.find(c4));

Ich erhalte diese Störung, wenn ich es laufen:

Ausnahme im Thread main java.lang.ClassCastException: TreeNode kann nicht auf java.lang.Comparable bei BinarySearchTree2.delete (BinarySearchTree2.java:83) bei Driver5.main (Driver5.java:36) gegossen werden

das zeigt dann auf die Delete-Methode in meiner bst-Klasse, die ist:

public void delete(E item) {

        TreeNode<E> nd = root;

        while(nd != null && nd.getItem().compareTo(item) != 0)
        {
            if(nd.getItem().compareTo(item) < 0)
                nd = nd.getRight();

            else
                 nd = nd.getLeft();
        }

        if( nd.getLeft() == null && nd.getRight() == null)
        {
            nd = null;
        }

        else if(nd.getLeft() != null && nd.getRight() == null)

        {
            nd.setItem((E)nd.getLeft());

        }
        else if(nd.getLeft() == null && nd.getRight() != null)
        {    
            nd.setItem((E)nd.getRight());

        }

        else if(nd.getLeft() != null && nd.getRight() != null)
        {

            nd.setItem((E)findsucc(nd));
        }    

}

der Fehler verweist direkt auf diese Zeile in meiner Löschmethode:

nd.setItem((E)nd.getRight());
Veröffentlicht am 17/09/2010 um 06:30
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
2

Ich denke , Ihre Erklärung von E „E erstreckt Comaprable“, in diesem Fall , wenn Sie genannt nd.getRightes TreeNode Instanz zurückgegeben , die für die Besetzung vergleichbar sein muss , um erfolgreich zu sein.

Die Linie, wo die Ausnahme aufgetreten sollte wie folgt aussehen für die Besetzung passieren

nd.setItem(nd.getRight.getItem)
Beantwortet am 17/09/2010 um 06:38
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more