private Result helper(TreeNode root) {
		
		Result result = new Result();
		if(root == null) {
			result.level = 1;
			result.balanced = true;
			return result;
		}
		
		Result leftResult = helper(root.left);
		Result rightResult = helper(root.right);
		
		if(leftResult.balanced && rightResult.balanced && Math.abs(leftResult.level - rightResult.level) <= 1){
			result.balanced = true;
			result.level = Math.max(leftResult.level, rightResult.level) + 1;
		} else {
			result.balanced = false;
		}
		
		return result;
	}