estrutura de dados
Type def struct tno
{
Float info;
Struct tno *esq, *dir;
Type def struct
{
Tno* raiz;
}tarvore
Void inicializar(tarvoe*A)
{(*A).raiz = NULL;
}
Void finalizar (tarvore *A)
{tconj c;
Tno *aux;
Inicializar (&c);
Inserir(&c,(*A).raiz);
While (!vazio(c))
{aux = obter(c);
Remover(&c,aux);
IF(aux!=NULL)
{
inserir(&c,(*Aux).esq);
Inserir(&c,(*aux).dir);
Free (aux);
}
}
Finalizar(&c);
}
Void finalizar_rec(tno **no)
{
IF(*no!=NULL)
{
Finalizar_rec(&(**no).esq);
Finalizar_rec(&(**no).dir);
Free(*no);
*no = NULL;
}
}
Finalizar(tarvore *A)
{
finalizar_rec(&(*A).raiz);
}
Vazia e cheia e buscar
Int vazia(tarvore A)
{return A.raiz==NULL;
}
Int cheia(tarvore A)
{ tno *Aux;
Aux= (tno*)malloc(sizeof(tno));
IF(aux==NULL)
Return 1;
Else
{
Free(aux);
Return 0;
}
}
Tno* Buscar(tarvore A, float info)
{
Tno No = A.raiz;
Int achou=0 ;
While (no!=NULL&&!achou)
IF(info(*no).dir;
Else
Achou =1;
IF (achou)
Return no;
Else
Return NULL;
}
Percorrer emordem, preordem e posordem
Void em ordemrec(tno*no)
{
IF(no!=NULL)
{
Emordemrec((*no).esq);
Printf(“%f”,(*no).info);
Emordemrec((*no).dir;
}
}
Void emordem(tarvore A)
{
Emordemrec(A.raiz);
}
Void preordemrec(tno *no)
{
IF(no!= NULL)
{
Printf(“%f”, (*no)
Preordemrec(*no).esq;
Preordemrec(*no).dir;
}
}
Void preordem(tarvore)
{
Preordemrec(a.raiz);
}
Void posordemrec(tno*no)
{
IF (no!=NULL)
{
Posordemrec(*no).esq;
Posordemrec(*no).dir;
Printf(“%f”,(*no).info;
}
}
Void posordem(tarvore A)
{
Posordemrec (A.raiz);
}
Largura e profundidade
Void largura(tarvore A)
{tno * no;
Tfila aux;
Inicializar (&aux);
Inserir(&aux,A.raiz);
While (!vazia(aux)
{
No=primeiro (aux);
Remover(&aux);
IF(no!=NULL)
{
Inserir(&aux,(*no).esq);
Inserir(&aux,(*no).dir);
Printf(“%f”,(*no).info);
}
}
Finalizar(&aux);
}
Void profundidade(tarvore A)
{ tno *no;
Tpilha aux;