Kivétel a cérna „fő” java.lang.ClassCastException:

szavazat
0

Én már a járművezető, hogy teszteljék az egyik adatstruktúrák (bináris keresési fa), és én találkoznak ebben a kérdésben. -Ez történik, ha be több mint 2 tárgyat a BST -Mi igyekszem tenni: Én behelyezése 4 tárgyat a fát, majd törlöm 2 objektumokat, majd kinyomtatja én lelet módszert, hogy megjelenik-e vagy nem talált tárgyak kérem. például:

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

Kapok ezt a hibát, amikor elindul:

Kivétel a cérna fő java.lang.ClassCastException: TreeNode nem lehet leadott java.lang.Comparable át BinarySearchTree2.delete (BinarySearchTree2.java:83) ba Driver5.main (Driver5.java:36)

amely aztán rámutat a törlési eljárás az én BST osztály, amely:

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

}

A hiba rámutat közvetlenül ezt a sort az én delete módszer:

nd.setItem((E)nd.getRight());
A kérdést 17/09/2010 06:30
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
2

Azt hiszem, a nyilatkozat E „E kiterjed Comaprable”, ebben az esetben, ha az úgynevezett nd.getRightvisszatért TreeNode fokon amelynek összehasonlíthatónak a leadott, hogy sikerül.

A vonal, ahol a kivétel történt így kell kinéznie az alábbiakban az öntött át

nd.setItem(nd.getRight.getItem)
Válaszolt 17/09/2010 06:38
a forrás felhasználó

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