How to insert elements into a Binary Search Tree?

Asked

Viewed 149 times

0

How can I make this function work? I am looking for an answer here on the site and still can’t

  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);
    }
}

1 answer

0

Try it! I put a create function to make 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;
}
  • Else if (account < account) is correct?

  • @Pedrofelippe Sorry, forgot to access by struct!

  • Set *l->account

  • when I put it, it’s a mistake. I created a Log *aux = *l and made aux->account. However, I don’t know if it’s entering left or right in fact

  • Call me in the email and I will get the complete code and fix it. [email protected]

Browser other questions tagged

You are not signed in. Login or sign up in order to post.