Hallo zusammen
Im Titel steht was ich machen will, meine Hilfsfunktionen funktionieren 100%. Allerdings bekomm ich bei der löschen-Methode immer ein StackOverFlowError.
Grundidee: Ich baue einen neuen Baum mit insert auf, aber ohne den zu löschenden Knoten. Am ende initialisiere ich den eigentlichen Baum mit dem neu erstellten Baum.
Hier ist der Code (Rekursiv):
In meiner eigenen RedBlackTree-Klasse behandle ich die Leaves mit _nil (also nicht mit null).
Vielleicht hat ja jemand ne Idee warum das nicht klappt.
LG!
Jakkkob
Im Titel steht was ich machen will, meine Hilfsfunktionen funktionieren 100%. Allerdings bekomm ich bei der löschen-Methode immer ein StackOverFlowError.
Grundidee: Ich baue einen neuen Baum mit insert auf, aber ohne den zu löschenden Knoten. Am ende initialisiere ich den eigentlichen Baum mit dem neu erstellten Baum.
Hier ist der Code (Rekursiv):
Java:
public void delete(TreeNode toDelete) {
TreeNode _rootTmp = _root;
RedBlackTree tree = new RedBlackTree();
if(_root == null) {
tree.insert(_root);
}
if(_rootTmp.left != _nil) {
if(!_rootTmp.left.equals(toDelete)) {
tree.insert(_rootTmp.left);
}
delete(_rootTmp.left);
}
if(_rootTmp.right != _nil) {
if(!_rootTmp.right.equals(toDelete)) {
tree.insert(_rootTmp.right);
}
delete(_rootTmp.right);
}
if(_rootTmp.left == _nil && _rootTmp.right == _nil) {
_root = tree._root;
}
}
In meiner eigenen RedBlackTree-Klasse behandle ich die Leaves mit _nil (also nicht mit null).
Vielleicht hat ja jemand ne Idee warum das nicht klappt.
LG!
Jakkkob