eclipse如何在java中实现AVL树?为什么compareTo说来源未知?
我正在为一个班级项目实现一个AVL树。我已经编写了搜索和插入方法,但我不确定它是否有效。当我尝试测试搜索和插入时,每当程序中的搜索方法到达compareTo语句时,它就会给出一个空指针异常。我知道,只有当有一个项目,根,搜索工作,它返回真。但根的左/右子级似乎没有关联。当我插入多个整数并搜索它们时,它什么都不做,或者总是返回true
如何实现AVL树?我必须使用链表/数组列表吗?不使用任何一个都可以实现它。部分要求是我不能使用JCF中的任何东西。我花了无数个小时试图找出问题所在,我总是回到一垒
当我使用。相比之下,它告诉我来源不明。测试运行示例:
这棵树是空的吗 树的大小:2 测试左高 树高:2 线程“main”java中出现异常。lang.NullPointerException 在爪哇。整型。compareTo(未知来源) 在爪哇。整型。compareTo(未知来源) 在AVLTree。搜索(AVLTree.java:110) 在AVLTreeTest。main(AVLTreeTest.java:13)
主要测试项目:
public class AVLTreeTest {
public static void main(String args[]){
AVLTree<Integer> tree = new AVLTree<Integer>();
tree.insert(9);
//tree.insert(5);
tree.insert(4);
//tree.insert(3);
//tree.insert(19);
System.out.println("Is the tree empty " + tree.isEmpty());
System.out.println("Size of tree: " + tree.size());
System.out.println("Height of tree: " + tree.height());
System.out.println(tree.search(9));
System.out.println(tree.search(5));
}
}
当我按下比较器上的f2键时:
else if(root!=null && item.compareTo(root.getItem())==0){
弹出以下窗口:
开放声明:int-java。朗,可比。比较(T arg0) 注意:这个元素既没有附加的源代码也没有附加的Javadoc,因此找不到Javadoc
# 1 楼答案
Integer.compareTo
如果你把null
传递进去,就会抛出一个NullPointerException
。给定代码,它看起来像root.getItem()
返回null
堆栈跟踪中的“未知源”表示有关源代码的信息不可用。无论如何,您可以非常确定问题不在
Integer
标准类中,因此您应该查看来自代码的第一个跟踪条目。那就是阿夫特里。java在110行