Я пытаюсь написать функцию, которая принимает BST и целевое целочисленное значение и возвращает самое близкое значение к этому целевому значению, содержащемуся в BST.
Однако мой код получает 0 вместо 10, что это ответ на этот случай
может ли кто-нибудь объяснить основную концепцию моей ошибки?
public static int findClosestValueInBst(BST tree, int target) {
int globalDiff = Integer.MAX_VALUE;
int answer = 0;
subFunction(tree, target, globalDiff, answer);
return answer;
}
private static void subFunction (BST tree, int target, int globalDiff, int answer) {
if (tree == null) {
return;
}
int localDiff = Math.abs(target - tree.value);
if (localDiff < globalDiff) {
globalDiff = localDiff;
answer = tree.value;
}
subFunction(tree.left, target, globalDiff, answer);
subFunction(tree.right, target, globalDiff, answer);
return;
}
public static class BST {
public int value;
public BST left;
public BST right;
public BST(int value) {
this.value = value;
}
}
public static void main (String[] args) {
BST first = new BST(1);
BST second = new BST(2);
BST third = new BST(10);
BST fourth = new BST(5);
BST fifth = new BST(4);
first.left = second;
first.right = third;
second.left = fourth;
second.right = fifth;
System.out.println(findClosestValueInBst(first, 11));
}