Pequeno problema recursivo

2 respostas
A

Meu professor passou os seguintes problemas:
Escrever uma função para contar o número de nós de uma arvore binária
nos seguintes casos:
a) Utilizando representação ligada em vetor
b) Utilizando representação com alocação dinâmica

eu pensei que poderia utilizar a função de percorrer em-ordem uma arvore binária para poder realizar a conta
mas a lógica para as duas acabou sendo a mesma, e não consegui sair disso.

segue o código da função

int cont = 0; // Contador
RPV (No Raiz){// RPV, representação ligada em vetor
 if( raiz != NULL){
 cont++;
 RPV(Raiz.esq);//Pega o filho a esquerda da raiz, para passar para a função novamente
 RPV(Raiz.dir);//Pega o filho a direita da raiz, para passar para a função novamente
}

Tanto para A e para a opção B a lógica pra mim parece a mesma não consigo pensar em outra forma
alguem pode me ajudar dizendo se isto está certo, e se não, me encaminhar para conseguir realizar isso.

2 Respostas

Flavio_Luiz

Kra eu fiz de ultima hora…
da uma conferida ai… mas axo q esta certo…

public void emOrdem(No no) { if(no != null) { emOrdem(no.getNoEsq()); System.out.print("\n"+no.getValor()); emOrdem(no.getNoDir()); } }

CrOnNoS

Seu código parece correto.
Se seu professor quer algo diferente para representação em vetor, será que ele não quer simplismente que você conte todos os nó’s no vetor que sejam diferente de null ?
Ou seja, simplismente iterar no vetor.

Criado 23 de setembro de 2009
Ultima resposta 23 de set. de 2009
Respostas 2
Participantes 3