How to count elements in a Binary Search Tree?

0

I'm trying to complete this function that looks for all the elements that point to a certain class. How can I fix my code?

    int log_obter_contagem_por_classe(Log **l, int classe){
    int cont = 0;
    Log *atual = *l;

    if (*l == NULL){
        return cont = 0;
    }

    while(atual != NULL){
        if (classe == (atual->classe)){
            cont++;
        }
        log_obter_contagem_por_classe(&(atual->esq), classe);
        log_obter_contagem_por_classe(&(atual->dir), classe);
    }
        return cont;
}

This is the inclusion code:

void log_registrar(Log **l, int conta, int classe, int timer, int caixa){

     if(*l == NULL){
        *l = cria_log(conta,classe, timer, caixa);
     }
    Log *aux, aux2;
    aux = *l;

    if (conta < conta){
         if(aux->esq == NULL){
             aux->esq = cria_log( conta, classe, timer, caixa);
         }
         else{
          log_registrar(aux->esq, conta, classe, timer, caixa);
         }
    }
     else{
         if(aux->esq == NULL){
             aux->dir = cria_log( conta, classe, timer, caixa);
         }
         else{
         log_registrar(aux->dir, conta, classe, timer, caixa);
        }
     }
}

Log* cria_log(int conta, int classe, int timer, int caixa){
    Log *novo = (Log*)malloc(sizeof(Log));
    if (novo == NULL){
        exit(1); //caso ocorra erro no malloc
    }
    novo->conta = conta;
    novo->classe = classe;
    novo->timer = timer;
    novo->caixa = caixa;
    novo->dir = NULL; //cria raiz a direta
    novo->esq = NULL; //cria raiz a esquerda
    return novo;
}
    
asked by anonymous 29.11.2018 / 22:01

0 answers