Originariamente inviato da ramy89
Puoi fare una visita dfs ricorsiva o iterativa se hai a disposizione una pila.
Durante la visita puoi mettere in un array tutte le occorrenze incontrate nei vari nodi (il valore count).
Alla fine della procedura hai questo array con tutte le occorrenze, lo ordini in senso decrescente.
Non so se è quello che intendevi tu, ma ho risolto modificando semplicemente la funzione treeprintn in questo modo

codice:
void treeprintn(struct tnode *p, int n)
{
	if (p != NULL)
	{
		if ((p->count) == n)
			printf("%3d %s\n", p->count, p->word);
		treeprintn(p->left, n);
		treeprintn(p->right, n);
	}
}
Ah, il potere di 5 minuti di pausa!!
Grazie mille comunque per l'aiuto. Come avresti implementato tu la funzione?