
Enviado em 03/12/2012 - 18:52h
Olá colegas, estou tentando implementar a função remover na árvore binária, escrevi até a logica, mas rodar que é bom nada...rsrsrr. Gostaria da ajuda de vocês, para saber no que estou errando.void remover (int x){
t_node *retira; // variavel para o nó a ser retirado
t_node *aux;// variavel para pegar raiz
t_node *pai;//variavel para pegar o pai do nó retirado
t_node *aux2;//filho apontando pro NULL pela esquerda(ant) ou direita(prox), para substituir o valor retirado
t_node *aux3;//anterior a aux2, criado para que o ponteiro que apontava pro aux2(substituto) va para o NULL
aux = raiz;// igualando o aux à raiz para começar a busca
retira->chave = x;// atribuindo o qual quero retirar
if(raiz == NULL){
printf("erro");
}
else{
int removeu = 0; // variavel para criar a repetição
while (removeu==0){//começa a busca pelo valor a ser retirado na arvore
if(retira->chave > aux->chave){ // se o numero posto maior que aux
if(aux->prox != NULL){// "if" para achar o valor sempre guardando o nó anterior
pai=aux;
aux= (t_node *)aux->prox;
}
else{
if(retira->chave = aux->chave){ // apos achar valor, procurar valor mais a esquerda para servir de substituto
if(aux->ant != NULL){
aux3=aux;
aux= (t_node *)aux->ant;
aux2=aux;
}
else{//após ter achado, pegar o ponteiro da direita e apontar para o substituto
pai->prox = aux2;
aux3->ant = NULL;//apontando para o NULL, aquele que apontava para o substituto
removeu=1;// saindo do WHILE
}
}
else{
printf("erro");
}
}
}
else{// mesma função citada acima, só que se a chave for menor que a raiz
if(retira->chave < aux->chave){
if(aux->ant != NULL){
pai=aux;
aux= (t_node *)aux->ant;
}
else{
if(retira->chave = aux->chave){
if(aux->prox != NULL){
aux3=aux;
aux=(t_node *)aux->prox;
aux2=aux;
}
else{
pai->ant = aux2;
aux3->prox = NULL;
removeu=1;
}
}
}
}
}
}
}
} IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
VOL já não é mais como antes? (9)
É normal não gostar de KDE? (13)
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









