#ifndef _ARVORE_LIBDADOS_H_ #define _ARVORE_LIBDADOS_H_ #include #include #include #include #define TAM_MAX 100 /* Tamanho máximo de uma string */ typedef struct RegAux { /* Registro que representa nó em árvore binária */ int info; struct RegAux *esq, *dir; } RegArv, *ArvBin; void InsereValor(ArvBin *ab, int valor); /* Esta função deve inserir o valor da variável "valor" na árvore binária de busca representada pela variável "ab". Note que valores iguais devem ser inseridos sempre à direita. */ void RemoveValor(ArvBin *ab, int valor); /* Esta função deve remover o valor da variável "valor" da árvore binária de busca representada pela variável "ab". Note que no caso de remoção de nó de grau 2, seu valor deve ser substituído pelo valor do menor sucessor. */ void VisitaPreOrdem(ArvBin ab, char **s); /* Esta função deve percorrer a árvore ab em pré-ordem e gerar uma cadeia de caracteres s com os valores visitados em pré-ordem separados por um espaço em branco. */ void VisitaInOrdem(ArvBin ab, char **s); /* Esta função deve percorrer a árvore ab em in-ordem e gerar uma cadeia de caracteres s com os valores visitados em in-ordem separados por um espaço em branco. */ void VisitaPosOrdem(ArvBin ab, char **s); /* Esta função deve percorrer a árvore ab em pós-ordem e gerar uma cadeia de caracteres s com os valores visitados em pós-ordem separados por um espaço em branco. */ int NumerodeNos(ArvBin ab); /* Esta função deve calcular e retornar o número de nós da árvore ab */ int Altura(ArvBin ab); /* Esta função deve calcular e retornar a altura da árvore ab */ void MaioresValores(ArvBin ab, char **s, int *k); /* Esta função deve calcular os k maiores valores armazenados na árvore ab e retorná-los em ordem decrescente e separados por um espaço em branco na cadeia de caracteres s */ void MenoresValores(ArvBin ab, char **s, int *k); /* Esta função deve calcular os k menores valores armazenados na árvore ab e retorná-los em ordem crescente e separados por um espaço em branco na cadeia de caracteres s */ void Frequencia(ArvBin ab, int **f, int *n); /* Esta função supõe que a árvore ab armazena apenas valores não negativos. Ela deve calcular o maior valor n armazenado na árvore e criar um vetor de freqüência f de tamanho n+1. Depois ela deve calcular e armazenar em f[i] o número de ocorrências do valor i na árvore ab. Por fim, ela deve retornar o vetor f e seu tamanho n+1. */ void EliminaRepetidos(ArvBin *ab); /* Esta função deve remover da árvore ab todos os valores repetidos deixando apenas uma ocorrência de cada valor. */ void LiberaArvore(ArvBin *ab); /* Esta função deve liberar todo espaço de memória alocado para a árvore */ #endif