Вопрос с поиском ближайшего значения в BST - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь написать функцию, которая принимает 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));

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...