J'ai utilisé un pilote pour tester l'une de mes structures de données (Binary Search Tree) et j'ai rencontré ce problème. -Il arrive quand j'insère plus de 2 objets dans le bst -Qu'est ce que j'essaie de faire: J'insère 4 objets dans l'arborescence, puis j'enlève 2 objets, puis j'imprime ma méthode find pour qu'elle affiche si oui ou non il a trouvé les objets que je demande. par exemple:Exception dans le fil "principal" java.lang.ClassCastException:
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));
Je reçois cette erreur quand je le lance:
Exception dans le thread "principal" java.lang.ClassCastException: TreeNode ne peut pas être jeté à java.lang.Comparable à BinarySearchTree2. supprimer (BinarySearchTree2.java:83) à Driver5.main (Driver5.java:36)
qui pointe alors à la méthode de suppression dans ma classe bst qui est:
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));
}
}
les points d'erreur directement à cette ligne dans ma méthode de suppression:
nd.setItem((E)nd.getRight());
Keshav, vous êtes tout à fait correct ... J'ai été dominant cette petite erreur pendant une heure et ne pouvait pas le comprendre . Merci beaucoup, prend tout son sens – user450267
je reçois maintenant une exception de pointeur NULL comme j'entre plusieurs objets dans la BST à – user450267
si (nd.getLeft() == null && nd.getRight() == null) \t \t \t { \t \t \t \t \t \t \t \t e = null; \t \t \t} – user450267