Excepción en hilo java.lang.ClassCastException "principal":

votos
0

He estado usando un controlador para probar uno de mis estructuras de datos (búsqueda binaria árbol) y me he encontrado con este problema. -Es sucede cuando inserto más de 2 objetos en el BST -Lo que estoy tratando de hacer: Estoy insertando 4 objetos en el árbol, entonces estoy borrando 2 objetos, y luego imprimir mi método de búsqueda para que muestre si no se encontraron los objetos que solicito. por ejemplo:

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));

Recibo este error cuando lo funciono:

Excepción en hilo principal java.lang.ClassCastException: TreeNode no se puede convertir a java.lang.Comparable en BinarySearchTree2.delete (BinarySearchTree2.java:83) en Driver5.main (Driver5.java:36)

que a su vez apunta al método de eliminación en mi clase de BST, que es:

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));
        }    

}

el error apunta directamente a esta línea en mi método de eliminación:

nd.setItem((E)nd.getRight());
Publicado el 17/09/2010 a las 06:30
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
2

Creo que su declaración de E es "E extiende Comaprable", en ese caso cuando llamó nd.getRightvolvió instancia TreeNode que tiene que ser comparable para el elenco de tener éxito.

La línea en la que ocurrió la excepción debe ser similar a continuación para el elenco que pase

nd.setItem(nd.getRight.getItem)
Respondida el 17/09/2010 a las 06:38
fuente por usuario

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