Estrutura de dados
Para a árvore apresentada na Questão 2, implemente em C as funções abaixo:
Obs.: utilize as funções e a estrutura de dados que está no arquivo Slides_Arvores_Binarias_1 que está no disco.
#include
#include
#include
//Cria a estrutura da Arvore struct arv { int info; struct arv* esq; struct arv* dir;
};
typedef struct arv Arv; bool vazia(Arv* a);
Arv* criarVazia();
Arv* criar(int c, Arv* e, Arv* d);
Arv* monta_arvore(Arv *r, int a);
bool pertence(Arv* a, int c);
//Função de imprimir resultados void imprimir(Arv* a);
//Funcão de exibir os nos folhas da Arvore int ExibirNosFolhas(Arv* a);
//Função de informar a altura da arvore int altura(Arv* a);
//Criando uma arvore vazia
Arv* criarVazia(){ return NULL;
}
//Criando uma arvore nao vazia Arv* criar(char c, Arv* sae, Arv* sad)
{ Arv* p = (Arv*) malloc (sizeof(Arv)); p->info = c; p->esq = sae; p->dir = sad; return p;
//montar a Arvore Arv *raiz, *d; int a, i;
srand(time(NULL)); a = rand()%20; raiz = criar(a, criarVazia(), criarVazia()); printf("\n\nNo a ser inserido: %d \n", a); imprimir(raiz); for (i = 0; iesquerda) + contarNos(raiz->direita); } printf("Qtde de NOS na arvore: %i \n\n", (char)contarNos(n1));
b) Função que retorna quantos nós folhas existem.
int contarNosFolha(Arvore *raiz){ if(raiz == NULL) return 0; if(raiz->esquerda == NULL && raiz->direita == NULL) return 1; return 0 + contarNosFolha(raiz->esquerda) + contarNosFolha(raiz- >direita); } printf("Qtde de NOS folha na arvore: %i \n\n", (char)contarNosFolha(n1));
c) Função que retorna quais são os nós folhas.
int ExibirNosFolhas(Arv* a)
{
if(a == NULL) return 0; if(a->esq == NULL && a->dir == NULL) printf(" %d", a->info);