Нахождение высоты двоичного дерева рекурсивно или итеративно? - PullRequest
0 голосов
/ 18 декабря 2018

Может ли кто-нибудь проверить правильность приведенного ниже кода высоты?Я не уверен, смогу ли я использовать рекурсию, поскольку 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());
    }
}

1 Ответ

0 голосов
/ 20 декабря 2018

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

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());
    }

}

}
...