How to insert elements into a Binary Search Tree?

0

How can I make this function work? I've been looking for an answer here on the site for some time and I still can not do it.

  void log_registrar(Log **l, 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

    if(*l == NULL){
        *l = novo;
    }

  //nessa parte em diante tentei de várias formas mas ainda não consegui

    else if (conta < (novo->conta)){
    log_registrar(&(novo->esq), conta, classe, timer, caixa);
    }
    else if (conta > (novo->conta)){
    log_registrar((Log**)(novo->dir), conta, classe, timer, caixa);
    }
}
    
asked by anonymous 29.11.2018 / 19:04

1 answer

0

Try it! I put a make p function let the code cleaner!

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

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

    }
    }
    else if (conta > conta){
    if(*l->esq==NULL){
        *l->dir = cria_log( conta, classe, timer, caixa);
    }else{  
     log_registrar(*l->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;
}
    
29.11.2018 / 19:39