我正在尝试为作业分配四叉树,其功能类似于二叉树,然后开始实现get()方法,如果该值存在,则该方法返回键的值,否则它返回null。但是,使用给定的测试用例,我会不断收到nullPointerException,而且似乎无法弄清楚原因。任何帮助都将受到赞赏。
这是我的get()方法:
public V get(Coord<X,Y> key) throws IllegalArgumentException {
checkKey(key);
Position<Entry<Coord<X, Y>, V>> p = treeSearch(tree.root(), key);
if(tree.isExternal(p)) { return null; }
return p.getElement().getValue();
}
现在,我的作业文件说这应该与此get方法(也在作业文件中)几乎相同:
public V get(K key) throws IllegalArgumentException {
checkKey(key); // may throw IllegalArgumentException
Position<Entry<K,V>> p = treeSearch(root(), key);
rebalanceAccess(p); // hook for balanced tree subclasses
if (isExternal(p)) return null; // unsuccessful search
return p.getElement().getValue(); // match found
}
类型有一些例外。
在测试案例中,它会创建一个临时树,其中的随机整数作为条目的值,并且这些树:
assertEquals(null, m.get(new Coord<>(0,2)));
assertEquals(null, m.get(new Coord<>(-6,-5)));
assertEquals((int)3, (int)m.get(new Coord<>(-5,-6)));
assertEquals((int)6, (int)m.get(new Coord<>(7,7)));
assertEquals((int)0, (int)m.get(new Coord<>(0,0)));
将始终为我的get()方法返回nullPointerException,而如果在示例中使用,它将返回键的值。