• Nenhum resultado encontrado

• Cada nó pode ter várias sub-árvores associadas

N/A
N/A
Protected

Academic year: 2022

Share "• Cada nó pode ter várias sub-árvores associadas"

Copied!
14
0
0

Texto

(1)
(2)

a

b

c

d

e

f g

h i

j

• Cada nó pode ter várias sub-árvores associadas

(3)

Existem várias representações (depende da aplicação)

Ex: Caso o número máximo de filhos de cada nó seja 3

struct arv3 { char info;

struct arv3 *f1, *f2, *f3;

};

a

b

c

d

f g

h i

j

(4)

Função para imprimir

void arv3_imprime (Arv3* a) { if (a != NULL){

printf(“<%c”, a->info);

arv3_imprime (a->f1);

arv3_imprime (a->f2);

arv3_imprime (a->f3);

printf(“>”);

} }

Impraticável declarar um campo para cada filho

(imagine uma árvore com até 100 filhos em cada nó)

(5)

Outra representação possível

#define N 3 struct arv3 {

char info;

struct arv3 *f[N];

}

void arv3_imprime (Arv3* a){

if (a != NULL){

printf(“<%c”, a->info);

for (int i=0; i<N; i++)

arv3_imprime (a->f[i]);

} }

Inadequada quando não se sabe o número de filhos

(6)

Adequada para árvores com número variável de filhos

Filhos de um nó são representados por uma lista

Um nó aponta para o seu primeiro filho (prim) Cada filho aponta para o próximo (prox) irmão

(7)

Representação de um nó da árvore:

Informação armazenada (Ex: um caractere)

Ponteiro para a primeira sub-árvore filha (null se for folha)

Ponteiro para a próxima sub-árvore irmão (null se for o último)

typedef struct arvvar { char info;

struct arvvar *prim; /* ponteiro para primeiro filho */

struct arvvar *prox; /* ponteiro para irmão */

}ArvVar;

(8)

ArvVar* arvv_cria (char c);

Cria um nó folha com a informação a ser armazenada

void arvv_insere (ArvVar* a, ArvVar* sa);

Insere uma nova subárvore como filha de um dado nó

void arvv_imprime (ArvVar* a);

Percorre todos os nós e imprime suas informações

int arvv_pertence (ArvVar* a, char c);

Verifica a ocorrência de uma dada informação na árvore

void arvv_libera (ArvVar* a);

Libera toda a memória alocada pela árvore

(9)

Cria um nó folha com a informação a ser armazenada, aloca o nó e inicializa os campos prim e prox com NULL

ArvVar* arvv_cria (char c) {

ArvVar *a =(ArvVar *) malloc(sizeof(ArvVar));

a->info = c;

a->prim = NULL;

a->prox = NULL;

return a;

}

(10)

Insere no início da lista uma nova subárvore como filha de um dado nó

void arvv_insere (ArvVar* a, ArvVar* sa) { sa->prox = a->prim;

a->prim = sa;

}

(11)

Percorre os nós e imprime seu conteúdo em pré-ordem

void arvv_imprime (ArvVar* a){

ArvVar* p;

printf("<%c\n",a->info);

for (p=a->prim; p!=NULL; p=p->prox) arvv_imprime (p); /* imprime filhas */

printf(">");

}

(12)

Verifica a ocorrência de uma dada informação na árvore

int arvv_pertence (ArvVar* a, char c) { ArvVar* p;

if (a->info==c) return 1;

for (p=a->prim; p!=NULL; p=p->prox) if (arvv_pertence (p, c))

return 1;

return 0;

}

(13)

Libera toda a memória alocada pela árvore

Libera as sub-árvores antes de liberar o espaço associado a um nó (libera em pós-ordem)

void arvv_libera (ArvVar* a) { ArvVar* p = a->prim;

while (p!=NULL) {

ArvVar* t = p->prox;

arvv_libera (p);

p = t;

}

free(a);

}

(14)

Calcula a maior altura entre as sub-árvores

int arvv_altura (ArvVar* a) { int hmax = 0;

ArvVar* p;

for (p=a->prim; p!=NULL; p=p->prox) { int h = arvv_altura (p);

if (h > hmax) hmax = h;

}

return hmax;

}

Referências

Documentos relacionados

“O lucro médio que determina os preços de produção tende sempre necessariamente a igualar-se à quantidade de mais- valia, correspondente a dado capital como

8.9 O CESPE/UnB divulgará a imagem da folha de respostas dos candidatos que realizaram as provas objetivas, exceto dos candidatos eliminados na forma do subitem

c) Pressione a softkey Armazenar; em seguida, gire o botão Entrada para destacar PNG e aperte o botão Entrada para selecionar esse como o tipo de arquivo;.. d) Pressione

Os estudantes realizam dois projetos teórico-práticos individuais: composição de uma série de imagens para ilustração de uma pequena narrativa literária (a mesma

Ter pouco efeito sobre a resistência da corda é um dos critérios mais importantes dentre todos os critérios de seleção de um nó para trabalho em altura e resgate.. Um bom

Desse modo, cada nó sensor monitora seu ambiente local e repassa os dados coletados e processados a um nó central, chamado de nó sink, cuja função é agregar

O Licitante que, convocado dentro do prazo de validade de sua proposta, não assinar o contrato ou ata de registro de preços, deixar de entregar documentação

As árvores onde cada nó que não seja folha numa árvore binária tem sub- árvores esquerda e direita não vazias são conhecidas como árvores estritamente binárias.. apresenta