Когда вы выполняете строку
find(currentNode.getLeft(), value);
Ваш оператор return currentNode.getData();
выполняется, но вы игнорируете то, что возвратил ваш рекурсивный вызов.(Аналогично для оператора getRight()
.) Затем оператор if / else завершается и выполняется return null
внизу.Вот почему вы всегда получаете null
.
Вернуть все, что возвращает рекурсивный вызов, так что возвращаемое значение должным образом распространяется обратно на исходный вызов, например:
return find(currentNode.getLeft(), value);