int Arvore::contagem(No* pNo) { int esq, dir; if(pNo) { pNo->setMembrosEsquerda(esq = contagem(pNo->getEsquerda())); pNo->setMembrosDireita(dir = contagem(pNo->getDireita())); return esq + dir + 1; } else { return 0; } }
int main(){ FILE *fp1, *fp2; arvore *raiz1 = NULL; arvore *raiz2 = NULL; info letra; if(!fopen("texto1.txt","r")) printf("%s\n", "sem arquivo 1"); else fp1=fopen("texto1.txt","r"); while (!feof(fp1)){ letra = getc(fp1); if((letra!='\n') && (letra!=EOF) && (letra!='\r')) insere_arvore_ordenando(&raiz1,letra); } if(!fopen("texto2.txt","r")) printf("%s\n", "sem arquivo 2"); else fp2=fopen("texto2.txt","r"); while (!feof(fp2)){ letra = getc(fp2); if((letra!='\n') && (letra!=EOF) && (letra!='\r')) insere_arvore_ordenando(&raiz2,letra); } printf("Arvore 1: "); printar_arvore(raiz1); printf("\nElementos no arvore 1 = %d ",contagem(raiz1)); printf("\nAltura no arvore 1 = %d ",1+altura(raiz1)); printf("\nEstrutura da Arvore 1:\n"); printar_largura(raiz1); printf("\n\n"); printf("Arvore 2: "); printar_arvore(raiz2); printf("\nElementos no arvore 2 = %d\n",contagem(raiz2)); printf("Altura da arvore 2 = %d ",1+altura(raiz2)); printf("\nEstrutura da Arvore 2:\n"); printar_largura(raiz1); if(!percorrer(raiz1, raiz2)) printf("\n\nArvores iguais.\n"); else printf("\n\nArvores nao iguais.\n"); return 0; }
int contagem(arvore *raiz){ return ((raiz != NULL) ? (contagem(raiz->esq) + contagem(raiz->dir) + 1) : 0); }
void Arvore::contagem() { contagem(raiz); }
int main() { contagem(); return 0; }