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 */

Relacionados