ne_tot_net
@ne_tot_net
а

Как найти максимум в бинарном дереве Java?

мой код:
public int max(Tree node) {
        int cur = (int) node.val();
        return maxInter(node, cur);
    }

    public int maxInter(Tree node, int maxValue) {
        if (node == null) {
            return maxValue;
        } else {
            int currentElement = (int) node.val;
            int tmpMaxValue = Math.max(currentElement, maxValue);
            maxInter(node.left, tmpMaxValue);
            maxInter(node.right, tmpMaxValue);
            System.out.println(tmpMaxValue); // просмотр макс значений
            return tmpMaxValue;
        }
    }

в чём ошибка?
  • Вопрос задан
  • 258 просмотров
Пригласить эксперта
Ответы на вопрос 2
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
То, что вы внутри функции присваиваете int параметру, снаружи функции не видно (переменная передается по значению, а не по ссылке). Поэтому результат рекурсивных вызовов надо брать из возвращаемого значения, а не надеятся, что функция сама обновит tmpMaxValue.
Ответ написан
Комментировать
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
В том, что результаты рекурсивных вызовов не используются.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы