我已經在這個程序上工作了幾天,並且在BinarySearchTree類中實現了一些主要方法,比如插入和刪除。插入似乎工作正常,但一旦我嘗試刪除我不斷收到錯誤。所以在玩了代碼後,我想測試我的compareTo方法。我創建了兩個新節點,並嘗試對它們進行比較,並得到以下錯誤:在二進制搜索樹程序中使用compareTo
線程「main」中的異常java.lang.ClassCastException:TreeNode無法轉換爲java.lang.Integer at java.lang.Integer。的compareTo(來源不明) 在TreeNode.compareTo(TreeNode.java:16) 在BinarySearchTree.myComparision(BinarySearchTree.java:177) 在main.main(main.java:14)
這裏是我的班創建節點:
public class TreeNode<T> implements Comparable
{
protected TreeNode<T> left, right;
protected Object element;
public TreeNode(Object obj)
{
element=obj;
left=null;
right=null;
}
public int compareTo(Object node)
{
return ((Comparable) this.element).compareTo(node);
}
}
我在做compareTo方法都錯了嗎?我想創建一個可以處理整數和字符串(seperatly當然)
感謝所有幫助傢伙!我最終得到了它的工作,但問題是我誤解了一些變量,所以我最終迷惑了自己。我傳遞給compareTo方法的對象是元素本身,而不是TreeNode。在我的其他課上,我一直傳遞給它一個TreeNode,這就是爲什麼它搞砸了。再次感謝。 –