We don't care about the content of the node. The interesting part is how do you define the Node itself.
struct Node<T> {
Node<T> left;
Node<T> right;
};
would obviously be the best choice (what I call in the article "raw value"). But it's not valid C++.