deleteNode 메서드를 호출하면 My Binary Search Tree 프로그램이 아무 것도 삭제하지 않는 것 같습니다. BST는 완벽하게 구축되어 작동하지 않는 노드 부분 만 삭제합니다. 나는 다음과 같은 내 deleteNode 메소드를 구현 내 BinarySearchTree 클래스에서이진 검색 트리에서 노드 삭제
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());
: :이처럼 내 메인에서 호출이 유일한 문제가 확실
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();
}
}