eh.. per farlo andare fino a n sotto-livelli devi scrivere una funzione che in ricorsione crea i nodi uno sotto l'altro, portandoti dietro ogni volta il nodo padre in cui inserire i vari figli.
una cosa del genere
private void Ricorsione(SiteMapNode padre, string idCategoriaPadre)
{
//esegui la select con categoria = idCategoriaPadre
//Crei un nuovo SiteMapNode per ogni record che leggi da questa select
AddNode(padre, NUOVONODO);
Ricorsione(NUOVONODO, NUOVACATEGORIAPADRE);
}