Grazie per la risposta, ho modificato così:
codice:
void leafSum(BinTree t) {
	leafSumAus(t, t->elem);
}


void leafSumAus(BinTree t, int tot) {
	if(isLeaf(t)) { // se è una foglia
		printf("foglia\n");
		printf("tot: %s\n", tot);
		t->elem = tot;
	}
	else {
		printf("non foglia\n");
		if(t->left != NULL)
			leafSumAus(t->left, tot + t->elem);
		if(t->right != NULL)
		leafSumAus(t->right, tot + t->elem);
	}
}
Aggiungendo le stampe sembra che si pianti quando entra nel ramo if perchè non stampa mai "foglia" e va in loop...