Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int insere_arvore(ArvBin* raiz, int valor){
- if(raiz == NULL)
- return 0;
- NO* novo;
- novo = (NO*) malloc(sizeof(NO));
- if(novo == NULL)
- return 0;
- novo->info = valor;
- novo->dir = NULL;
- novo->esq = NULL;
- if(*raiz == NULL)
- *raiz = novo;
- else{
- NO* atual = *raiz;
- NO* ant = NULL;
- while(atual != NULL){
- ant = atual;
- if(valor == atual->info){
- free(novo);
- return 0;
- }
- if(valor > atual->info)
- atual = atual->dir;
- else
- atual = atual->esq;
- }
- if(valor > ant->info)
- ant->dir = novo;
- else
- ant->esq = novo;
- }
- return 1;
- }
- NO* remove_atual(NO* atual) {
- NO *no1, *no2;
- if(atual->esq == NULL){
- no2 = atual->dir;
- free(atual);
- return no2;
- }
- no1 = atual;
- no2 = atual->esq;
- while(no2->dir != NULL){
- no1 = no2;
- no2 = no2->dir;
- }
- if(no1 != atual){
- no1->dir = no2->esq;
- no2->esq = atual->esq;
- }
- no2->dir = atual->dir;
- free(atual);
- return no2;
- }
- int insere_rec_arvore(ArvBin* raiz, int valor, NO* atual){
- if(raiz == NULL)
- return 0;
- NO* novo;
- novo = (NO*) malloc(sizeof(NO));
- if(novo == NULL)
- return 0;
- novo->info = valor;
- novo->dir = NULL;
- novo->esq = NULL;
- if(*raiz == NULL)
- *raiz = novo;
- else{
- NO* atual = *raiz;
- NO* ant = NULL;
- if (atual != NULL) {
- ant = atual;
- if(valor == atual->info){
- free(novo);
- return 0;//elemento jรก existe
- }
- if(valor > atual->info) {
- atual = atual->dir;
- } else {
- atual = atual->esq;
- insere_rec_arvore(raiz, valor, atual);
- }
- }
- if(valor > ant->info)
- ant->dir = novo;
- else
- ant->esq = novo;
- }
- return 1;
- }
- NO* remove_rec_atual(NO* atual, NO *no1, NO *no2 ) {
- if(atual->esq == NULL){
- no2 = atual->dir;
- free(atual);
- return no2;
- }
- no1 = atual;
- no2 = atual->esq;
- if(no2->dir != NULL){
- no1 = no2;
- no2 = no2->dir;
- remove_rec_atual(atual, no1, no2);
- }
- if(no1 != atual){
- no1->dir = no2->esq;
- no2->esq = atual->esq;
- }
- no2->dir = atual->dir;
- free(atual);
- return no2;
- }
Add Comment
Please, Sign In to add comment