recursão – Problema para calcular altura da arvore Trie em C

estou precisando implementar um codigo que calcule a altura de uma arvore Trie na linguagem C.

a struct do nó é a seguinte:

struct trie_cel {
char tipo; // 'I': interno / 'P': palavra
struct trie_cel *filho(TAMANHO_ALFABETO); // Utilizar a funcao CHAR_TO_INDEX para obter o no filho de cada letra.
};
typedef struct trie_cel no;

estou tentando calcular a altura da arvore Trie com recursão mas estou com um erro, essa é minha função:

if(r == NULL) return -1;
if(!r) return 0;
int alt = 0;
int alturaM = 0;
no** i = r->filho;
no** fim = i + (sizeof(r->filho) / sizeof(no *));
while(i != fim){
    alt = altura(r->filho(i))+1;
    if(alt > alturaM){
        alturaM = alt;
    }
}
return alturaM;

Porem esta sendo apresentado o seguinte erro e não estou conseguindo localiza-lo, alguem poderia me ajudar?

erro:

    trie.cpp: In function ‘int altura(no*)’:
trie.cpp:146:32: error: invalid types ‘trie_cel* (27)(no** {aka trie_cel**})’ for array subscript
         alt = altura(r->filho(i))+1;
                                ^
chmod: cannot access 'vpl_execution': No such file or directory