ABB_AVL
324 palavras
2 páginas
#include #include
#include "ABB_AVL.h"
/******************************************************************************/
/* Funções Necessárias */
/******************************************************************************/
int maior(int a, int b){ //Maior entre 2 elementos if(a > b)return a; else return b;
}
int altura(No *raiz){ if((*raiz) != NULL) return(1 + maior(altura(&(*raiz)->esq), altura(&(*raiz)->dir))); return(0);
}
void RotacionaEsquerda(No *raiz){ No q, aux;
q = (*raiz)->dir; aux = q->esq; q->esq = (*raiz); (*raiz)->dir = aux; return;
}
void RotacionaDireita (No *raiz){ No q, aux;
q = (*raiz)->esq; aux = q->dir; q->dir = (*raiz); (*raiz)->esq = aux; return;
}
void VerificaBinariaDeBusca (No *raiz){
if((*raiz) != NULL){
if((*raiz)->esq != NULL) if((*raiz)->info < (*raiz)->esq->info){ puts("Árvore não binária de busca!"); return; }
if((*raiz)->dir != NULL) if((*raiz)->info > (*raiz)->dir->info){ puts("Árvore não binária de busca!"); return; }
VerificaBinariaDeBusca(&(*raiz)->esq); VerificaBinariaDeBusca(&(*raiz)->dir); }
}
No *MenorDosMaiores(No *raiz, No *pai){ if((*raiz) != NULL){ if((*raiz)->esq != NULL){ *pai = (*raiz); //Pai do no, precisamos dele para declarar NULL quando remover o nó. Se o pai é igual ao NULL, o elemento já era o menor. MenorDosMaiores(&(*raiz)->esq, &(*pai)); } else return((*raiz)); }
}
/******************************************************************************/
/* Funções Básica */