#include #include #include "arvore.h" /* Nó da árvore */ struct noArvore { int info; NoArvore *esq; NoArvore *dir; }; /* Cria uma árvore vazia */ NoArvore *arvCriaVazia(void) { return NULL; } /* Cria uma (sub)árvore com raiz e filhos fornecidos */ NoArvore *arvCria(int info, NoArvore *sae, NoArvore *sad) { NoArvore *a = (NoArvore *) malloc(sizeof(NoArvore)); if (a != NULL) { a->info = info; a->esq = sae; a->dir = sad; } return a; } /* Verifica se a árvore está vazia */ int arvVazia(NoArvore *a) { if (a == NULL) return 1; return 0; } /* Libera a memória ocupada pela árvore */ void arvLibera(NoArvore *a) { if (arvVazia(a)) return; /* libera sub-arvore da esquerda */ arvLibera(a->esq); /* libera sub-arvore da direita */ arvLibera(a->dir); free(a); } /* Imprime as informações armazenadas na árvore */ void arvImprime(NoArvore *a, int nivel) { int n; if (arvVazia(a)) return; /* imprime infos da sub-arvore da direita */ arvImprime(a->dir, nivel + 1); /* imprime info na raiz */ for (n = 0; n < nivel; n++) printf("\t"); printf("%d\n",a->info); /* imprime infos da sub-arvore da esquerda */ arvImprime(a->esq, nivel + 1); } /*-------------------------------------------------------------------*/ /*------------- FUNÇÕES QUE DEVEM SER IMPLEMENTADAS -----------------*/ /*-------------------------------------------------------------------*/ /* Retorna a quantidade de nós "internos" */ int arvInternos(NoArvore *a) { return 0; } /* Retorna o maior inteiro armazenado na árvore */ int arvMaior(NoArvore *a) { return -1; } /* Compara duas árvores */ int arvIguais(NoArvore *a1, NoArvore *a2) { return 0; } /* Verifica se uma árvore tem altura maior que uma dada altura */ int arvAlturaMaior(NoArvore *a, int altura) { return 0; }