我正在完成一个BinarySearchTreeMap
类,它听起来确实如此:它是用二叉搜索树实现的Map。
我似乎得到了一个Null指针异常,我无法控制。我认为这种情况发生在其他类似情况。我得到了问题的方法,我的逻辑似乎是正确的,所以如果有任何提示或提示为什么有一个空指针以及我将来如何防止这些,请告诉我!
以下是我正在创建的方法 - 在外部节点插入一个条目:
/** Auxiliary method for inserting an entry at an external node. Inserts e
* at v, expanding v to be internal with empty external children, and then
* returns e. */
protected Entry<K,V> insertAtExternal(Position<Entry<K,V>> v, Entry<K,V> e) throws InvalidEntryException{
if(isInternal(v)) throw new InvalidEntryException("You tried to insert an external at an internal node!");
replaceEntry(v,e); //replace the node at the given position
insertLeft(v,null); //insert a dummy external node to the left of it
insertRight(v,null); //insert a dummy external node to the right of it
numEntries++; //since v is now internal, include it in the numEntries
return e;
}
protected V replaceEntry(Position <Entry<K,V>> pos, Entry<K,V> ent) {
((BSTEntry<K,V>) ent).pos = pos;
return replace(pos, ent).getValue();
}
返回声明是导致我麻烦的行。 任何帮助将是欣赏。 克劳迪亚
编辑: 这就是替换方法的实现方式:
replace(Position<E> v, E o)
throws InvalidPositionException {
BTPosition<E> vv = checkPosition(v);
E temp = v.element();
vv.setElement(o);
return temp;
}