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;
}
}
}
}
}
}
}
}
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Alguém que utilize o Warsaw do BB no Ubuntu 24.04 (2)
como instalar o docker desktop e o docker no debian 12 arm64 (11)