def recursive_helper(current_node, is_balanced):
    """Recursively check if left and right trees of current node are balanced

    Parameters
    ----------
    current_node : Node
        Node to check in a binary search tree
    is_balanced : bool
        True if all nodes checked so far are balanced, False if any nodes
        checked so far are unbalanced

    Returns
    -------
    height : int
        Height of current node
    is_balanced : bool
        True if all nodes checked so far are balanced, False if any nodes
        checked so far are unbalanced
    """
    # Break case for recursion:
    if current_node is None:
        return 0, is_balanced

    # Recursively get heights of sub-trees at left and right nodes, checking
    # that both sub-trees are balanced
    left_height, is_balanced_left = recursive_helper(
        current_node.left_node, is_balanced
    )
    if not is_balanced_left:
        return None, is_balanced_left
    right_height, is_balanced_right = recursive_helper(
        current_node.right_node, is_balanced
    )
    if not is_balanced_right:
        return None, is_balanced_right

    # Check that heights of left and right sub-trees don't differ by more than
    # 1
    if abs(left_height - right_height) > 1:
        return None, False

    return max(left_height, right_height) + 1, is_balanced