0
Java에서 주어진 입력 값 int x를 포함하는 경우 이진 탐색 트리 내의 노드를 제거하는 비 재귀 적 메소드를 작성하려고합니다. 내가 스택을 사용해야하지만 그 자체로 함수를 호출하지 않고 노드를 제거하는 방법을 알아낼 수 없다는 것을 알았습니다.이진 검색 트리 : Java를 사용하여 주어진 값 x 재귀 적으로 TreeNode를 제거하십시오.
이것은 현재 내 TreeNode 클래스입니다.
class TreeNode {
private int data; // data item (key)
private TreeNode left; // this node's left child
private TreeNode right; // this node's right child
// The "external node" is a special node that acts as a sentinel.
private final static TreeNode externalnode = TreeNode.createExternalNode();
/* Return a TreeNode that represents an "external node"*/
public static TreeNode getExternalNode() {
return externalnode;
}
/* Creates a new TreeNode with no children.
*/
public TreeNode(int id) { // constructor
data = id;
left = externalnode;
right = externalnode;
}
나는 이것을 시도했지만 작동하지 않습니다.
public TreeNode removeB(int x){
if (this == externalnode) return externalnode;
TreeNode one = new TreeNode(this.data);
System.out.println(this);
Stack<TreeNode> s = new Stack();
s.push(one);
//System.out.println(s);
boolean check;
boolean check1;
while(check = true){
if(x == one.left.data){
System.out.println(one.left.data);
check = false;
return one.left;
}
if(x == one.right.data){
System.out.println(one.right.data);
check1 = false;
return one.right;
}
}
'removeNode()'와 관련하여 지금까지 시도한 것을 포함시킬 수 있습니까? 내 제안은 널리 문서화 된 해당 방법에 대한 표준 재귀 적 솔루션을 먼저 구현 한 다음이를 반복적으로 적용하는 것입니다. 유일한 차이점은 반복 검색 대신 'while' 루프를 사용할 노드 검색 동안입니다. 부모/자식 연결 논리를 실제로 처리하는 코드는 매우 유사해야합니다. – Jameson
@Jameson 코드를 업데이트하고 추가했습니다. –