C++で自己参照構造体というものがあると思います。(後述の二分探索木の例を参照)

この場合、p,l,rの型はNodeではなくてNode*です。
これはNodeではいけないのでしょうか?

ネットで自己参照構造体をぐぐってみると、みんなポインタを使ってはいるものの、
ポインタである必要性を説明している記事が見当たらなかったので不思議に思ってます。

struct Node {
  int key;
  Node *p, *l, *r;
}