递归或迭代地找到二叉树的高度?

时间:2018-12-18 14:09:37

标签: java recursion binary iteration binary-tree

有人可以检查下面的高度代码是否正确吗?我不确定是否可以使用递归,因为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 :(得分:0)

这可以解决问题。一些代码块移到了正确的位置,重写了递归步骤中的null检查,并添加了一些示例:

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

}

}