Linked List Interview Code methods, runtime, and edge cases
The namespace std is not designed for wholesale importation, see &quot;Why is “using namespace std” considered bad practice?&quot; for more detail.
You could instead do a using std::cout; or better qualify the three use-sites.

You don't in any way encapsulate the list and abstract over the list. It's just a bunch of Nodes. Consider putting it all into a List owning and managing the whole lot.

Trying to remove() the root-Node uncovers a bug. Try to trace it through.

pointer != nullptr is just a long-winded way to write pointer in a boolean context. Respectively for pointer == nullptr and !pointer. Yes, Java needs that, but this is C++.

When you return from the if-branch, putting the alternative in an else-branch is superfluous.

A function for printing an object should allow the caller to specify the stream, and be called operator&lt;&lt;.

There is no reason to rely on the compiler transforming recursion to iteration, especially as it might not always be able.

this should rarely be used explicitly.