Я пытаюсь закодировать метод, который возвращает количество узлов в двоичном дереве, которые имеют значение в диапазоне.
Вот если полный код запрашивается:
public class StaffInfo {
final String name;
final int monthHired;
public StaffInfo(String name, int monthHired){
this.name = name;
this.monthHired = monthHired;
}
public class StaffTree implements Iterable<StaffInfo>{
public StaffNode root;
public StaffTree(StaffInfo c) {
this.root = new StaffInfo(c);
}
private StaffTree(StaffNode c) {
this.root = c;
}
class StaffNode {
StaffInfo data;
StaffNode senior;
StaffNode same;
StaffNode junior;
public StaffNode(StaffInfo data) {
this.data = data;
this.senior = null;
this.same = null;
this.junior = null;
}
Вот код метода, с которым у меня возникли проблемы:
public int numInRange(int monthMin, int monthMax) {
int count = 0;
if (monthMin > monthMax) {
return 0;
}
if (root.data.monthHired >= monthMin && root.data.monthHired <= monthMax) {
count++;
}
if (root.senior != null) {
root.senior.numInRange(monthMin, monthMax);
}
if (root.same != null) {
root.same.numInRange(monthMin, monthMax);
}
if (root.junior != null) {
root.junior.numInRange(monthMin, monthMax);
}
return count;
Я имитирую офис, поэтому у каждого узла может быть дочерний элемент, который является старшим, младшим или одинаковым (определяется датой найма). monthMin и monthMax - это целые числа, представляющие количество месяцев с января 2015 года.
Когда я запускаю приведенный выше код, я получаю StackOverFlowError.
Любая помощь приветствуется!
Если проблема неясна, пожалуйста, дайте мне знать в комментариях, и я сразу же отредактирую ее.