이것은 이진 검색 트리 검색 및 삽입을위한 코드입니다. Node12 insert2 (Node12 curr, int d) 함수를 반복하여 트리의 왼쪽 및 오른쪽 노드를 확인하려고 할 때. 한 줄에 런타임 오류가 표시됩니다. 도와주세요이진 검색 트리에 대한 코드를 작성했습니다. 하지만 java.lang.StackOverflowError 아래 코드에서 하나의 오류가 발생했습니다
class bst {
class Node12 {
Node12 left, right;
int data;
Node12(int d) {
data = d;
left = null;
right = null;
}
}
Node12 root;
bst() {
root = null;
}
void Search(int looking) {
Node12 current = root;
while (current != null) {
if (current.data == looking) {
System.out.println("Desirable print" + current.data);
} else if (current.data > looking) {
current = current.left;
} else {
current = current.right;
}
}
}
void insert(int d) {
root = insert2(root, d);
}
Node12 insert2(Node12 curr, int d) {
curr = root;
if (curr == null) {
curr = new Node12(d);
return curr;
}
if (curr.data > d) {
curr.left = insert2(curr.left, d);
} else if (curr.data < d) {
curr.right = insert2(curr.right, d);-----(Here i am getting error)
}
return curr;
}
void inorder2() {
inorder(root);
}
void inorder(Node12 current) {
current = root;
if (current != null) {
inorder(current.left);
System.out.println(current.data);
inorder(current.right);
}
}
public static void main(String... s) {
bst b1 = new bst();
b1.insert(10);
b1.insert(20);
b1.insert(30);
b1.insert(40);
b1.insert(50);
b1.insert(60);
b1.inorder2();
b1.Search(25);
}
}
숙제 문제입니다. 그래서 나는 BST와 그 구현을 이해하려고 노력하고있다.
'insert2'는 curr'가'null' 경우에만 '정지 재귀 방법이다. 메소드의 시작 부분에'curr'을''root''로 설정 하였지만, 메소드 내에서'root'의 값을 절대 변경하지 않습니다. 즉,'root'가'null'이 아닐 때 당신은 무한 재귀를 가질 것입니다. – Titus