Your type signature for sortNode specifies an empty context but (<) and (>) require that type a is an instance of class Ord and (==) requires that it is an instance of class Eq. You need to add a constraint to the context as Nikita suggested or omit the explicit type signature and the interpreter will be able to infer it.
sortNode :: (Ord a) => Node a -> Node a -> Ordering