Árvore Binaria

265 palavras 2 páginas
Arvore Binária com inserção e remoção. Impressão em pré-ordem. Usar formato exemplo de entrada: i 5 //insere 5 i 4 i 10 i 7 r 4 //remove 4 p //imprime a arvore em pre-ordem

#include
#include

typedef struct no { struct no *esq; struct no *dir; int valor;
}no;

void inserirNo(no **raiz,int elemento) { if(*raiz == NULL) { no *aux = (no *)malloc(sizeof(no)); aux->valor = elemento; aux->dir = aux->esq = NULL; *raiz = aux; return; } if(elemento < (*raiz)->valor) { inserirNo(&(*raiz)->esq,elemento); return; } if(elemento > (*raiz)->valor) { inserirNo(&(*raiz)->dir,elemento); return; } printf("Elemento %d ja existe na arvore.\n",elemento);
}

no *DoisFilhos(no *root) { if(root==NULL) return NULL; else if(root->esq == NULL) return root; else return DoisFilhos(root->esq);
}

void removerNo(no **raiz,int elemento) { if(elemento < (*raiz)->valor){ removerNo(&(*raiz)->esq,elemento); } else if(elemento > (*raiz)->valor){ removerNo(&(*raiz)->dir,elemento); } else if((*raiz)->esq!=NULL && (*raiz)->dir!=NULL){ no *aux= NULL; aux = DoisFilhos((*raiz)->dir); (*raiz)->valor = aux->valor; removerNo(&(*raiz)->dir,(*raiz)->valor); } else { no *aux = (*raiz); if((*raiz)->esq==NULL) { (*raiz) = (*raiz)->dir; } else { *raiz = (*raiz)->esq; } free(aux); }
}

void pesquisaPreOrdem(no *raiz) { if(raiz == NULL) return; printf("%d\n",raiz->valor); pesquisaPreOrdem(raiz->esq); pesquisaPreOrdem(raiz->dir);
}

int main() { char loop; int numero = 0; no *raiz = NULL;

while (loop != 'L') { scanf(" %c", &loop); switch(loop) { case 'i': scanf("%d", &numero); inserirNo(&raiz,numero); break; case 'r': scanf("%d", &numero); removerNo(&raiz,numero); break;

Relacionados

  • Arvore Binaria
    2327 palavras | 10 páginas
  • Arvore binária
    1053 palavras | 5 páginas
  • Arvore binaria
    474 palavras | 2 páginas
  • Arvore binaria
    660 palavras | 3 páginas
  • árvore binária
    917 palavras | 4 páginas
  • Arvore Binaria
    555 palavras | 3 páginas
  • Arvore Binaria
    865 palavras | 4 páginas
  • Arvore Binaria
    1080 palavras | 5 páginas
  • Árvore Binárias
    1501 palavras | 7 páginas
  • Arvore Binaria
    691 palavras | 3 páginas