diff --git a/fonte/u07 Árvores binárias/c/arvorebinaria.c b/fonte/u07 Árvores binárias/c/arvorebinaria.c index cfb7d73..832f809 100644 --- a/fonte/u07 Árvores binárias/c/arvorebinaria.c +++ b/fonte/u07 Árvores binárias/c/arvorebinaria.c @@ -198,61 +198,3 @@ void maiorEsq(No** i, No** j) { free(del); } } - - -/** - * Metodo publico iterativo para remover elemento. - * @param x Elemento a ser removido. - */ -void removerSucessor(int x) { - removerRecSucessor(x, &raiz); -} - -/** - * Metodo privado recursivo para remover elemento. - * @param x Elemento a ser removido. - * @param i No** endereco do ponteiro No - */ -void removerRecSucessor(int x, No** i) { - if (*i == NULL) { - errx(1, "Erro ao remover!"); - - } else if (x < (*i)->elemento) { - removerRec(x, &((*i)->esq)); - - } else if (x > (*i)->elemento) { - removerRec(x, &((*i)->dir)); - - } else if ((*i)->dir == NULL) { - No* del = *i; - *i = (*i)->esq; - free(del); - - } else if ((*i)->esq == NULL) { - No* del = *i; - *i = (*i)->dir; - free(del); - - } else { - maiorEsq(i, &((*i)->dir)); - } -} - -/** - * Metodo para trocar no removido pelo maior elemento da esquerda. - * @param i No** endereco do ponteiro No que contem o elemento removido. - * @param j No** endereco do ponteiro No da subarvore esquerda. - */ -void maiorEsq(No** i, No** j) { - // Encontrou o maximo da subarvore esquerda. - if ((*j)->dir == NULL) { - No* del = *j; - (*i)->elemento = (*j)->elemento; // Substitui i por j. - (*j) = (*j)->esq; // Substitui j por j.ESQ. - free(del); - - // Existe no a direita. - } else { - maiorEsq(i, &((*j)->dir)); // Caminha para direita. - } -} diff --git a/fonte/u07 Árvores binárias/c/arvorebinaria.h b/fonte/u07 Árvores binárias/c/arvorebinaria.h index 2049daa..c09594d 100644 --- a/fonte/u07 Árvores binárias/c/arvorebinaria.h +++ b/fonte/u07 Árvores binárias/c/arvorebinaria.h @@ -14,9 +14,7 @@ void caminharPreRec(No*); void caminharPosRec(No*); void inserirRec(int, No**); void removerRec(int, No**); -void antecessor(No**, No**); -void removerRecSucessor(int, No**); -void sucessor(No**, No**); +void maiorEsq(No**, No**); void start(); bool pesquisar(int); @@ -25,4 +23,3 @@ void caminharPre(); void caminharPos(); void inserir(int); void remover(int); -void removerSucessor(int); diff --git a/fonte/u07 Árvores binárias/c/principal.c b/fonte/u07 Árvores binárias/c/principal.c index 06bbee6..3076040 100644 --- a/fonte/u07 Árvores binárias/c/principal.c +++ b/fonte/u07 Árvores binárias/c/principal.c @@ -46,10 +46,10 @@ int main(){ printf("\nVoltando com a árvore inicial"); printf("\nRemover: 3"); printf("\nCaminhar: central, pre e pos\n"); - removerSucessor(2); + remover(2); inserir(1); inserir(2); - removerSucessor(3); + remover(3); caminharCentral(); caminharPre();