Рекурсивно или итеративно определить высоту двоичного дерева?

Может ли кто-нибудь проверить правильность приведенного ниже кода для высоты? Я не уверен, могу ли я использовать рекурсию, поскольку public int height() не имеет переданных аргументов. Я предполагаю, что высота пустого дерева равна 0.

public class BinaryTree {
    private class Node {
        String value;
        Node left;
        Node right
    }

    Node root;

    // Assume there is a constructor and various methods here

    public int height() {
        if (Node == null) {
            return 0;
        }

        return 1 + math.max(left.height(), right.height());
    }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
60
1

Ответы 1

Это поможет. Некоторые фрагменты кода перемещены на свои места, проверка нуля на рекурсивном шаге переписана, добавлен небольшой образец:

public class BinaryTree {

public static void main(String[] args) {
    Node sports = new Node();

    Node individual = new Node();
    Node team = new Node();
    sports.left = individual;
    sports.right = team;

    Node javelin = new Node();
    individual.left = javelin;

    System.out.println(sports.height()); // Return 3
}

private static class Node {

    Node left;
    Node right;

    public int height() {
        return 1 + Math.max(left == null ? 0 : left.height(), right == null ? 0 : right.height());
    }

}

}

Другие вопросы по теме