




































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Aula de estrutura de dados tipo árvore
Tipologia: Notas de aula
1 / 44
Esta página não é visível na pré-visualização
Não perca as partes importantes!
disponível em http://www.inf.puc-rio.br/~inf1620/.
Um conjunto de nós tal que:^ – existe um nó r, denominado
raiz,
com zero ou mais sub-
árvores, cujas raízes estão ligadas a r
filhos
de r
nós internos
da árvore são os nós com filhos
-^
as folhas
ou
nós externos
da árvore são os nós sem filhos
Representação por parênteses aninhados^ –
( A (B) ( C (D (G) (H)) (E) (F (I))))^ Diagrama de Inclusão
Representação Hierárquica
Representação da expressão aritmética:^ (a + (b * (c / d - e)))
Nós filhos, pais, tios, irmãos e avô
-^
Grau de saída (número de filhos de um nó)
-^
Nó folha (grau de saída nulo) e nó interior
(grau de
saída diferente de nulo)
-^
Grau de uma árvore (máximo grau de saída)
-^
Floresta (conjunto de zero ou mais árvores)
Nível da raiz (profundidade) é 0.
-^
Árvore Ordenada: é aquela na qual filhos de cada nóestão ordenados. Assume-se ordenação da esquerdapara a direita. Esta árvore é ordenada?
Árvore Cheia: Uma árvore de grau d é uma árvore cheiase possui o número máximo de nós, isto é, todos os nóstêm número máximo de filhos exceto as folhas, e todasas folhas estão na mesma altura.
-^
Árvore cheia de grau 2: implementação sequencial. Armazenamento por nível: posição do nó
posição dos filhos do nó
1
2,
2
4,
3
6,
i^
(2i,2i+1)
Notação textual^ – a árvore vazia é representada por <>– árvores não vazias por
-^
Exemplo:^ – <a <b <> <d<><>> > <c <e<><>> <f<><>>> >
Uma árvore em que cada nó tem zero, um ou dois filhos
-^
Uma árvore binária é:^ – uma árvore vazia; ou– um nó raiz com duas sub-árvores:
typedef
struct
arv
Arv;
//Cria
uma
árvore
vazia
Arv*
arv_criavazia
(void);
//cria
uma
árvore
com
a^
informação
do
nó
raiz
c ,
e
//com
subárvore
esquerda
e
e
subárvore
direita
d
Arv*
arv_cria
(char
c,
Arv*
e,
Arv*
d);
//libera
o^
espaço
de
memória
ocupado
pela
árvore
a
//libera
o^
espaço
de
memória
ocupado
pela
árvore
a
Arv*
arv_libera
(Arv*
a);
//retorna
true
se
a^
árvore
estiver
vazia
e
false
//caso
contrário
int
arv_vazia
(Arv*
a);
//indica
a^
ocorrência
ou
não
do
caracter
c
int
arv_pertence
(Arv*
a,
char
c);
//imprime
as
informações
dos
nós
da
árvore
void
arv_imprime
(Arv*
a);
Implementação das funções:^ – implementação em geral recursiva– usa a definição recursiva da estrutura
-^
Uma árvore binária é:^ – uma árvore vazia; ou– um nó raiz com duas sub-árvores:
-^
a sub
a sub
função arv_cria^ – cria um nó raiz dadas a informação e as duas sub-árvores,
a da esquerda e a da direita
arv_cria
(char
c,
Arv*
sae,
Arv*
sad){
Arv*
p=(Arv)malloc(sizeof(Arv));*
Arv*
p=(Arv)malloc(sizeof(Arv));*
p->info
c;
p->esq
sae;
p->dir
sad;
return
p;
TAD Árvores Binárias – Implementação em C • arv_criavazia e arv_cria
é composta por uma raiz e duas sub
é composta por uma raiz e duas sub
a=arv_cria(c,sae,sad);