나는 hw 질문이 ... 나는 이진 검색 트리에 대한 제거 방법을 써야만하는데, 지금까지 내가 가지고있는 것은 아래에있다. 그러나 나는 내 제거 방법과 관련된 많은 오류를 계속 갖고있다. 그리고 나는 왜 ... 누군가 내 코드를 점검 할 수 있는지를 확신하지 못한다. 고맙습니다. 나는 또한 find 메소드를 만들려고했지만 그걸로 몇 가지 문제가 있습니다 ... 그것은 제거 코드의 맨 아래에 있습니다.자바에서 BST 메서드를 제거
import java.util.*;
class TreeNode383<E extends Comparable> {
private E data;
private TreeNode383<E> left;
private TreeNode383<E> right;
private TreeNode383<E> parent;
public TreeNode383() { left = right = parent = null; }
public TreeNode383(E d, TreeNode383 <E> l, TreeNode383 <E> r,
TreeNode383 <E> p) {
data = d;
left = l;
right = r;
parent = p;
}
public E getData() { return data; }
public void setData(E d) { data = d; }
public TreeNode383<E> getLeft() { return left; }
public void setLeft(TreeNode383<E> l) { left = l; }
public TreeNode383<E> getRight() { return right; }
public void setRight(TreeNode383<E> r) { right = r; }
public TreeNode383<E> getParent() { return parent; }
public void setParent(TreeNode383<E> p) { parent = p; }
public String toString() {
String answer = "";
if (left != null) answer += left.toString();
answer += data + " ";
if (right != null) answer += right.toString();
return answer;
}
}
**The start of my remove method**
boolean remove (E obj)
{
if(root == obj)
return false;
//when deleting a leaf just delete it
else if(obj.getleft == NULL && obj.getright == NULL)
parent = obj = NULL;
//when deleting an interior node with 1 child
//replace that node with the child
else if(obj.getleft == NULL && obj.getright != NULL)
obj.setright = new TreeNode383<E>(newData, null, null, null);
else if(obj.getleft != NULL && obj.getright == NULL
obj.setleft = new TreeNode383<E>(newData, null, null, null);
//when deleting an interior node with 2 children
//find left most node in right subtree,
//promote it to replace the deleted node
//promote its child to replace where it was
/*
private BinaryNode findMin(BinaryNode t)
{
if(t == null)
return null;
else if(t.left == null)
return t;
return findMin(t.left);
}
*/