Ich arbeite mit binären Suchbaum für die Klassenzuordnung. Ich versuche, einen Knoten durch einen anderen Knoten zu ersetzen, indem ich den neuen Knoten dem rekursiven Methodenparameter zuweise.Parametrierung funktioniert nicht wie erwartet
Die Zeile node = minNode(node.right);
funktioniert nicht wie erwartet. Es ändert den Parameter SearchTreeNode<E> node
, aber diese Änderung wird nicht an this.overallRoot
weitergegeben. Beispiel: Wenn der Stamm des Baums 5 ist und wir 5 entfernen und der Ersatz 7 wäre, bleibt this.overallRoot
5, obwohl der Parameterknoten auf 7 geändert wurde. Siehe Screenshots unten.
Irgendeine Idee, was ich falsch mache?
public void remove(E data) {
if (this.overallRoot != null) {
this.removeData(this.overallRoot, data);
}
}
private void removeData(SearchTreeNode<E> node, E data) {
if (node.data == data) {
if (node.left == null && node.right == null) {
node = null;
} else if (node.left != null && node.right != null) {
node = minNode(node.right);
} else if (node.right == null) {
node = node.left;
} else if (node.left == null) {
node = node.right;
}
} else if (data.compareTo(node.data) < 0) {
this.removeData(node.left, data);
} else if (data.compareTo(node.data) > 0) {
this.removeData(node.right, data);
}
}
private SearchTreeNode<E> minNode(SearchTreeNode<E> node) {
if (node.left == null) {
return node;
}
return minNode(node.left);
}
Bitte schreiben Sie Ihren Code. – shmosel
Stackoverflow gibt mir Fehler, ich versuche, Screenshot sowie das Debugging für weitere Informationen hinzuzufügen –