Implementação de arvoreavl

1088 palavras 5 páginas
#include
#include
#include
#include

typedef struct arv{ char info; struct arv *esq; struct arv *dir; } Arv;

Arv* cria_vazia (); int arv_vazia (Arv* a);
Arv* arv_insere (Arv* a, char v); void arv_imprime (Arv* a, int i); int max2 (int a, int b); int arv_altura (Arv* a); int arv_busca (Arv* a, char c);
Arv* arv_libera (Arv* a);
Arv* arv_remover (Arv* a, char x); int Altura (Arv* a); int Calcula_FB (Arv* a);
Arv* rot_direita (Arv* arv_dir);
Arv* rot_esquerda (Arv* arv_esq);
Arv* rot_dupla_direita (Arv* arv_dir);
Arv* rot_dupla_esquerda(Arv* arv_esq);
Arv* arv_balancear (Arv* a);

// Inicializa o ponteiro Arv* arv_criavazia();
Arv *cria_vazia(){ return NULL;
}
// int arv_vazia(Arv *a){ return (a==NULL);
}

// Faz a inserção na arvore
Arv* arv_insere (Arv* a, char v)
{
if (a==NULL) { a= (Arv*)malloc(sizeof(Arv)); a->info = v; a->esq = a->dir = NULL; } else if (v < a->info) a->esq=arv_insere(a->esq,v); else a->dir=arv_insere(a->dir,v); return a;
}

// Procedimento que Imprime na tela void arv_imprime(Arv *a, int i)
{
if (!arv_vazia(a)) //Verifica se a árvore está vazia { if (i==0)printf("< "); if (i==1)printf("> "); printf ("%c ", a->info); arv_imprime(a->esq,0); //função recursiva a esquerda arv_imprime(a->dir,1); //função recursiva a direita } else printf("- ");
}

//Se for verdadeira retorna a se falsa b int max2(int a, int b)
{
return (a>b)?a:b; if (a>b) return a; else return b;
}

// busca a altura da arvore int arv_altura(Arv *a){ if(arv_vazia(a)) return -1; else return 1+max2(arv_altura(a->esq),

Relacionados

  • Poblema basiado em Linguagem
    2063 palavras | 9 páginas
  • Tecnologia
    2514 palavras | 11 páginas
  • Arvores Homero
    7616 palavras | 31 páginas