Измените insert(value)
на current.insert(value)
Чтобы реализовать рекурсию, вам нужно изменить параметр (или несколько), чтобы вы могли перейти в состояние остановки после некоторых рекурсивных вызовов.
В своем коде вы вызвали метод insert
, который был частью того же объекта.И не его левое / правое поддерево.Другими словами, рекурсия никогда не заканчивается, потому что вы не посещаете дочерние поддеревья.
public class Tree {
private int data;
private Tree left;
private Tree right;
public Tree (int data) {
this.data=data;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Tree getLeft() {
return left;
}
public void setLeft(Tree left) {
this.left = left;
}
public Tree getRight() {
return right;
}
public void setRight(Tree right) {
this.right = right;
}
public void insert(int value) {
if (value < getData()) {
if (getLeft() == null) {
setLeft(new Tree(value));
} else {
getLeft().insert(value);
}
} else {
if (getRight() == null) {
setRight(new Tree(value));
} else {
getLeft().insert(value);
}
}
}
}