Checking if a tree is balanced or not
These functions can be static, and therefore should be.  Marking them static makes it clear that this is not object-oriented code.  It also serves as a hint for the JIT to inline the helper function.

Instead of using Math.abs() and Math.max(), I suggest using Math.max() and Math.min(), which simplifies the conditionals a bit.

I would expect getHeight(null) to return 0.  As you've written it, a node with no children is at height 2, which is a weird place to start counting, even if it works.

Never omit braces like that.  You will contribute to a coding accident: [Citation 1] [Citation 2]. If you really want to omit braces, then put the entire conditional statement on the same line for safety.

private static int getHeight(Node node) {
    if (node == null) return 0;

    int leftHeight  = getHeight(node.getLeft()),
        rightHeight = getHeight(node.getRight());

    int taller  = Math.max(leftHeight, rightHeight),
        shorter = Math.min(leftHeight, rightHeight);

    if (shorter &lt; 0 || taller - shorter &gt; 1) {
        return -1;           // Unbalanced tree
    } else {
        return taller + 1;
    }
}