NÃO ESTOU CONSEGUINDO FAZER ALGUÉM PODE ME AJUDA?
Questão 1
Construa a árvore balanceada AVL de inteiros para a sequência: 2, 1, 0, 3, 4, 9, 5, 6, 8, 10, 7.
Obs. Não é necessário enviar a árvore construída.
Considerando a seguinte estrutura de nós para a árvore AVL construída:
typedef struct s_cel{
int val,alt;
struct s_cel *esq,*dir;
} cel;
Mostre o resultado da execução da seguinte rotina caso seja passado como parâmetro a raiz da árvore construída:
int calcula(cel *esse) {
int total;
if(esse == NULL)
return 0;
total = esse->val;
total += calcula(esse->dir);
total += calcula(esse->esq);
printf(“Subarvore em %d = %d“,esse->val,total);
return total;
}
Questão 2 (1,0 ponto)
Escreva uma rotina que receba a raiz de uma árvore cujos nós têm a estrutura definida na questão 1 e que calcule a altura de cada nó registrando o resultado no campo alt da estrutura.
-------------------------------------------------------------------------------------------------------------------
As questões 3 e 4 se referem ao seguinte problema: deseja-se implementar uma árvore binária de busca para armazenar um conjunto de livros. Os livros são definidos pelo ano da publicação, título, nome do primeiro autor e número de páginas. A árvore binária vai organizar os livros por ano. Cada nó da árvore corresponde a um ano e contém uma lista encadeada com os livros publicados naquele ano. Considere que a árvore esta ordenada por ano. As estruturas de dados da árvore são as seguintes:
typedef struct s_cel{
int ano;
livro *inicio;
struct s_cel *esq,*dir;
} cel;
typedef struct s_livro {
char titulo[100],autor[100];
int pags;
struct s_livro *prox;
} livro;
Questão 3 (3,0 pontos)
Escreva uma rotina recursiva que receba um ano e a raiz da árvore e mostre os dados de todos os livros publicados naquele ano. A busca deve ser otimizada considerando que a árvore está ordenada.
Questão 4 (3,0 pontos)
Escreva uma rotina recursiva que receba a raiz da árvore e que retorne o ano para o qual existem mais livros e quantos livros são.