arvore rubro negra com menu de insercao
#include
#include
#include
#include
struct noh
{
int numero_arvore; char cor; struct noh *pai; struct noh *esquerda; struct noh *direita;
};
typedef struct noh nohVP;
// Prototipo das funções nohVP* criaNovoNoh(); void rotacaoEsquerda(nohVP **Arvore_PV, nohVP *noh); void rotacaoDireita(nohVP **Arvore_PV, nohVP *noh); nohVP* inserir_Novo_Noh_PV(nohVP **Arvore_PV, nohVP *noh); void inserirCorVP(nohVP **Arvore_PV, nohVP *noh); void removerCorVP(nohVP **Arvore_PV, nohVP *noh); nohVP* sucessorVP(nohVP *noh); nohVP* maximoVP(nohVP *noh); nohVP* minimoVP(nohVP *noh); void visitarEmOrdem(nohVP* Arvore_PV); void mostraDadosNoh(nohVP* noh); int menu(); int calcularAlturaPreta(nohVP *noh); nohVP* localizar_Noh_Arvore(nohVP* noh, int numero_arvore); nohVP* rotacaoDireitaEsquerda(nohVP* arvore); nohVP* rotacaoEsquerdaDireita(nohVP*arvore); nohVP *removerVP(nohVP **Arvore_PV, nohVP *noh);
nohVP *vazio = NULL;
int main()
{
nohVP *Arvore_PV = NULL; nohVP *aux; int valor, altura, opc;
vazio = (nohVP*)malloc(sizeof(nohVP)); vazio->pai = Arvore_PV; vazio->direita = vazio->esquerda = vazio;
do { opc = menu(); switch (opc) {
case 1: inserir_Novo_Noh_PV(&Arvore_PV, criaNovoNoh()); break; case 2: printf("Listagem dos nohs da Arvore \n\n"); if(Arvore_PV != NULL) { visitarEmOrdem(Arvore_PV); } else { printf("Sem Elementos na Arvore \n"); } break; case 3: if(Arvore_PV != NULL) { altura = calcularAlturaPreta(Arvore_PV); printf("Altura preta da arvore: %d\n", altura); } else { printf("Sem Elementos na Arvore \n"); }