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;
}
}
}
}
}
}
}
}
Automatizando digitação de códigos 2FA no browser
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Como converter imagens PNG/JPEG para SVG em linha de comando
Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!
Restaurando Fontes de Download do Hydra no Linux
Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads
Como instalar o WPS com interface e corretor ortográfico em PT-BR no Arch Linux
O que você está ouvindo agora? [2] (179)
Ubuntu 25.04 não instala. (18)
Linux mint não desliga corretamente mesmo mexendo no grub (0)