class TreeNode:
    def __init__(self, v, left=None, right=None):
        self.value = v
        self.left = left
        self.right = right

def mystery(t):
    return mystery_helper(t, None, None)

def mystery_helper(t, a, b):
    if t is None:
        return True
    elif a != None and t.value <= a:
        return False
    elif b != None and t.value >= b:
        return False
    else:
        return mystery_helper(t.left, a, t.value) and \
            mystery_helper(t.right, t.value, b)

if __name__ == '__main__':
    r = TreeNode(4)
    r.left = TreeNode(3)
    r.right = TreeNode(7)
    r.right.left = TreeNode(6)
    print mystery(r)

