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;
}
}
}
}
}
}
}
}
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Vou voltar moderar conteúdos de Dicas e Artigos (1)
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta