public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        int ret = isbalanced(root) ;
        if (ret < 0) {
            return false;
        }
        return true;
    }
    public int isbalanced(TreeNode root) {
        if (root == null) return 0;
        int lH = isbalanced(root.left);
        int rH = isbalanced(root.right);

        int h = Math.max(lH, rH) + 1;
        if (lH < 0 || rH < 0) {
            return -1;
        }
        if (Math.abs(lH - rH) > 1) {
            return -1;
        }
        
        return h;
    }
}