Dies ist ein relativ großes Projekt, aber ich werde versuchen, alle notwendigen Dinge hier zu setzen.Probleme beim Entfernen von BST
/** Removes the record with Key k from the dictionary. It throws a
DictionaryException if the record is not in the dictionary. */
public void remove(Key k) throws DictionaryException{
deleteNode = findNode(k);
if (deleteNode == null) throw new DictionaryException("Error: Record doesn't exist in the dictionary!");
else{
//check if children are leafs
if(deleteNode.getLeftChild() == null || deleteNode.getRightChild() == null)
//set it to itself
replace = deleteNode;
else
//otherwise replace with successorNode
replace = successorNode(deleteNode);
//store left child if it exists
if (replace.getLeftChild() != null)
child = replace.getLeftChild();
//else, store right
else
child = replace.getRightChild();
//check if both nodes are null
if (child != null)
child.setParent(replace.getParent());
//else replace the node that needs to be deleted
else{
//replace left child of parent
if(replace == replace.getParent().getLeftChild())
replace.getParent().setLeftChild(child);
//else replace right
else
replace.getParent().setRightChild(child);
}
//store information of the replacing node, within the deleteNode
if (replace != deleteNode)
deleteNode.setRoot(replace.getRecord());
}
}
Diese Methode hat einen Null-Zeiger-Fehler für das Elternmaterial. Ich bin mir nicht sicher, wie ich damit umgehen soll.
Dies ist ein geordnetes Wörterbuch, das in einem BST gespeichert ist. Knoten bestehen aus Datensätzen, die aus (Schlüssel, Daten) bestehen, wobei Schlüssel (Name, Typ) ist. Im Wesentlichen ist ein Record ((Name, Typ), Daten).
Ich kann bei Bedarf weitere Informationen zur Verfügung stellen. Ich bin hier für eine Weile festgefahren, jede Hilfe wird geschätzt!
Willkommen bei Stack-Überlauf! Es sieht so aus, als müssten Sie lernen, einen Debugger zu verwenden. Bitte helfen Sie sich selbst [https://ericlippert.com/2014/03/05/how-to-debug-small-programs/]. Wenn Sie danach noch Probleme haben, können Sie gerne weitere Einzelheiten erfahren. –