def is_BST_recurse(root, low, high):
    """Returns True iff the tree is a BST and fits between low and high."""
    if not root:
        return True

    return low < root.data < high and \
           is_BST_recurse(root.left, low, root.data) and \
           is_BST_recurse(root.right, root.data, high)