Mein binärer Suchbaum Programm scheint nicht etwas zu löschen, wenn ich die deleteNode Methode aufrufen. Die BST ist perfekt gebaut, es ist nur der Knoten Teil zu löschen, das nicht funktioniert. Ich nenne es von meinem Haupt wie folgt aus:
System.out.println(Please enter a number you would like to delete from the tree);
temp = reader.nextLine();
try {
int numTemp = Integer.parseInt(temp);
TreeNode treeTemp = bst.deleteNode(numTemp, bst.getRoot());
bst.setRoot(treeTemp);
}
catch(Throwable e){
System.err.println(e);
}
bst.printInBST(bst.getRoot());
In meiner BinarySearchTree Klasse implementieren ich meine deleteNode Methoden, wie folgend:
public TreeNode deleteNode(int x, TreeNode temp){
if(temp != null){
if(x > (int)((Integer)temp.getValue())){
temp.setLeft(deleteNode(new Integer(x), temp.getLeft()));
}
else if(x < (int)((Integer)temp.getValue())){
temp.setRight(deleteNode(new Integer(x), temp.getRight()));
}
else if(temp.getLeft() != null & temp.getRight() != null){
TreeNode temp2 = new TreeNode(temp.getRight().getValue());
while(temp2.getLeft() != null){
temp2 = temp2.getLeft();
}
temp = temp2;
temp.setRight(remove(temp.getRight()));
}
}
return temp;
}
public TreeNode remove(TreeNode temp){
if(temp.getLeft() != null){
temp.setLeft(remove(temp.getLeft()));
return temp;
}
else {
return temp.getRight();
}
}













