Έχω χρησιμοποιήσει ένα πρόγραμμα οδήγησης για τη δοκιμή ένα από δομές δεδομένων μου (Binary Search Tree) και έχω έρθει σε αυτό το θέμα. -Είναι συμβαίνει όταν τοποθετώ πάνω από 2 αντικείμενα μέσα στο BST-Τι προσπαθώ να κάνω: Είμαι εισαγωγή 4 αντικείμενα στο δέντρο, τότε είμαι διαγραφή 2 αντικείμενα, και στη συνέχεια εκτύπωση μέθοδο εύρημα μου, έτσι ώστε να εμφανίζει ή δεν βρήκε τα αντικείμενα που ζητώ. για παράδειγμα:
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));
Θα λάβετε αυτό το σφάλμα όταν το τρέξετε:
Εξαίρεση στο νήμα κύριος java.lang.ClassCastException: TreeNode δεν μπορεί να ρίχνει στο java.lang.Comparable σε BinarySearchTree2.delete (BinarySearchTree2.java:83) σε Driver5.main (Driver5.java:36)
το οποίο στη συνέχεια δείχνει διαγραφής μέθοδο στην κατηγορία BST μου που είναι:
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));
}
}
το σφάλμα επισημαίνει απευθείας σε αυτή τη γραμμή στο διαγραφής μέθοδο μου:
nd.setItem((E)nd.getRight());













