Mi sa che non ti è chiaro l'uso dei template. I template implementano il polimorfismo parametrico, dove il tipo delle variabili è esso stesso una variabile.
Questo è un modo per riutilizzare il codice su tipi diversi (un altro sistema p.e. è il polimorfimo per inclusione, quello del paradigma OOP).
Ciò che includi tra <> è il tipo astratto, la variabile di tipo.
Facciamo un esempio:

Codice PHP:
template <class T> class Albero{
....
}; 
A questo punto tu potrai instanziare:

Codice PHP:
Albero<intalbero1;
Albero<tipoelemalbero2
Potrai creare alberi di interi o di tipoelem sfruttando lo stesso codice del template.
La classe T è astratta nel senso che non esiste, è la variabile generica di tipo.