AED1 - Árvoreshebert/disc/aed1/AED1_10_Arvores.pdf · Árvore Material baseado no capítulo 3 e 4...
Transcript of AED1 - Árvoreshebert/disc/aed1/AED1_10_Arvores.pdf · Árvore Material baseado no capítulo 3 e 4...
AED1 - Árvores
Hebert Coelho
Instituto de InformáticaUniversidade Federal de Goiás
HC AED1-Árvores 1/49
Roteiro
Árvore;
Árvores - Representações;
Árvores - Conceitos;
Árvores Binárias;
Árvores Binárias - Conceitos;
Árvores Binárias - Representação;
Árvores Binárias - Percursos;
Árvores Binárias - Percursos Recursivos;
Árvores Binárias de Busca.
HC AED1-Árvores 2/49
Árvore
Material baseado no capítulo 3 e 4 do livro Estruturas de Dadose seus Algoritmos, 2o edição, Autores: Jayme Luiz Szwarc�ter,Lilian Markenzon.
HC AED1-Árvores 3/49
Aplicações de árvores
Diversas aplicações necessitam que se represente um conjuntode objetos e suas relações hierárquicas;Várias são as aplicações de árvores:
Relações de descendência;Diagrama hierárquico de uma organização;Campeonatos e modalidades esportivasTaxonomia;Busca de Dados armazenados no computador;Representação de espaço de soluções (ex: jogo de xadrez);Modelagem de algoritmos.
HC AED1-Árvores 4/49
Exemplo de aplicação de árvores
HC AED1-Árvores 5/49
Árvore
De�nição:
Uma árvore enraizada T é um conjunto �nito de vértices (nós) taisque:
T é um conjunto vazio, ou
Existe um nó r (raiz) tal que os demais nós são particionadosem m > 1 conjuntos não vazios, as subárvores de r e sendocada um desses conjuntos uma árvore.
HC AED1-Árvores 6/49
Árvores - Representações
a) Representação Hierárquica:
Círculos são chamados de nós ou vértices e as retas são chamadasde arestas.
b) Parênteses Aninhados:
( 1 ( 3 ( 4 ) ) ( 2 ) ( 5 ) )
HC AED1-Árvores 7/49
Árvores - Conceitos
B é �lho de A;
B é tio de D;
B é irmão de C;
D é sobrinho de E;
D, B e E são folhas;
A e C são nós intermediários (internos).
HC AED1-Árvores 8/49
Árvores - Conceitos
Raiz é o nó que na representação hierárquica que estadesenhado na parte mais alta da ávore, o único nó que nãopossui pai;
Caminho é uma sequencia de nós de modo que existe sempreuma aresta ligando o nó anterior com o seguinte;
HC AED1-Árvores 9/49
Árvores - Conceitos
A quantidade de arestas entre dois vértices é o comprimentodo caminho entre os vértices;
A altura de um nó x é a maior altura de um �lho de x
acrescido de 1, a altura de uma folha é 1;
A altura de uma árvore é a altura da raiz;
O nível de um nó x é o comprimento do caminho de x até araiz;
Existe um único caminho entre dois nós de uma árvore.Exercício: prove o último item!
HC AED1-Árvores 10/49
Tipos de Árvores
Árvore binária de busca;
Árvore AVL;
Árvore Rubro-Negra;
Árvore B, B+ e B*;
Árvore 2-3;
Árvore 2-3-4;
Quadtree;
Octree;
etc.
HC AED1-Árvores 11/49
Árvores Binárias
De�nição:
Uma árvore binária enraizada T é um conjunto �nito de vértices(nós) tais que:
T é um conjunto vazio, ou
Existe um nó r (raiz) tal que os demais nós são particionadosem 2 subconjuntos disjuntos, as subárvores esquerda (Te) edireita (Td ) de r, sendo cada uma delas uma árvore binária.
HC AED1-Árvores 12/49
Árvores Binárias - Conceitos
Exemplo:
Subárvore esquerda (Te) do nó raiz com chave 1;
Subárvore direita (Td ) do nó raiz.com chave 1.
HC AED1-Árvores 13/49
Árvores Binárias - Conceitos
n = 9
O número de subárvores nulas (ponteiros nulos) em umaárvore binária com n nós é n+1;
Exercício: Prove!
HC AED1-Árvores 14/49
Árvores Binárias - Conceitos
Uma árvore é:
Estritamente Binária se cada nó tem 0 ou 2 �lhos;
Binária Completa se as subárvores nulas estão todas abaixodos dois últimos níveis;
Binária Cheia se as subárvores nulas estão todas abaixo doúltimo nível.
HC AED1-Árvores 15/49
Árvores Binárias - Conceitos
Árvore Estritamente Binária
Exercícios:1 Desenhar todas as árvores binárias distintas para com 3 chaves
(ex. 1, 2, 3);2 Desenhar uma árvore estritamente binária com 11 nós e altura
5.
HC AED1-Árvores 16/49
Árvores Binárias - Conceitos
Árvore Binária Cheia
Exercícios:1 Quantos nós tem uma árvore binária cheia de altura h?2 Qual o número mínimo de nós em uma árvore binária completa
de altura h?
HC AED1-Árvores 17/49
Árvores Binárias - Conceitos
Altura h de uma árvore árvore binária completa com n nós:
2h−1 ≤ n ≤ 2h − 1⇒ h = blog2nc+ 1
Altura de uma árvore binária com n nós:
blog2nc+ 1 ≤ h ≤ n
HC AED1-Árvores 18/49
Árvores Binárias - Representação
Representação de cada nó:
info left right
1 Typedef struct no2 {3 int info;4 struct no ∗left;5 struct no ∗right;6 } no ;
HC AED1-Árvores 19/49
Árvores Binárias - Percursos
Percursos em árvores binárias são formas sistemáticas de percorrer(visitar) os nós da árvore.
Percurso em Nível;
Percurso em Pré-Ordem;
Percurso em Ordem Simétrica;
Percurso em Pós-Ordem.
HC AED1-Árvores 20/49
Árvores Binárias - Percursos
Percurso em Nível:
A ideia é visitar um nível a cada vez, de cima para baixo e daesquerda para a direita.
+ * - A B C / D E
HC AED1-Árvores 21/49
Árvores Binárias - Percursos
1 Percurso_nivel ( T )2 Esvazia(Fila);3 Enfila (T);4
5 Enquanto (Fila não estiver Vazia):6 Desenfila (p);7 Visita (p);8 Enfila (p−>esq);9 Enfila (p−>dir);10 Fim enquanto;11 Fim;
+ * - A B C / D E
HC AED1-Árvores 22/49
Árvores Binárias - Percursos
Exercício:
Mostrar a situação da �la na Busca em nível da árvore acima.
HC AED1-Árvores 23/49
Árvores Binárias - Percursos
Percurso em Pré-Ordem (RED):
A ideia é visitar, sistematicamente, a raiz, em seguida toda asubárvore esquerda e depois toda a subárvore direita.
+ * A B - C / D E
HC AED1-Árvores 24/49
Árvores Binárias - Percursos
1 Pré−Ordem ( T )2 Esvazia (Pilha);3 PUSH (T);4
5 Enquanto(topo != NULO)//pilha não vazia6 POP (p); Visita (p);7 PUSH (p−>dir);8 PUSH (p−>esq);9 Fim enquanto;10 Fim;
+ * A B - C / D EHC AED1-Árvores 25/49
Árvores Binárias - Percursos
Exercício:
Mostrar a situação da pilha na Busca em pré-ordem da árvoreacima.
HC AED1-Árvores 26/49
Árvores Binárias - Percursos
Percurso em Ordem Simétrica (ERD):
A ideia é visitar, sistematicamente, toda a subárvore esquerda,a raiz, e em seguida toda a subárvore direita.
A * B + C - D / E
HC AED1-Árvores 27/49
Árvores Binárias - Percursos
1 Ordem Simétrica ( T )2 Esvazia (Pilha); p = T;3 Enquanto ((p != NULO) || (topo != NULO))4 Enquanto (p != Nulo):5 PUSH (p); p = p−>esq;6 Fim enquanto;7 POP (p); Visita (p); p = p−>dir;8 Fim enquanto;9 Fim;
A * B + C - D / E
HC AED1-Árvores 28/49
Árvores Binárias - Percursos
Exercício:
Mostrar a situação da pilha na Busca em ordem simétrica da árvoreacima.
HC AED1-Árvores 29/49
Árvores Binárias - Percursos
Percurso em Pós-Ordem (EDR):
A ideia é visitar, sistematicamente, toda a subárvore esquerda,em seguida toda a subárvore direita e, por �m, a raiz.
A B * C D E / - +
HC AED1-Árvores 30/49
Árvores Binárias - Percursos
Exercícios:1 Implementar o percurso em pós-ordem;2 Mostrar a situação da pilha na Busca em pós-ordem da árvore
acima;3 Implementar todos os percursos em linguagem C.
HC AED1-Árvores 31/49
Árvores Binárias - Percursos
1 Pos−Ordem ( T )2 Esvazia Pilha; p = T;3
4 Enquanto ((p != NULO) || (topo != NULO)):5 Enquanto (p != Nulo):6 PUSH (p, 1); p = p−>esq;7 Fim enquanto;8
9 Enquanto ((p == NULO) && (topo != NULO)):10 POP (p, vez);11 Se ((vez = 1) && (p−>dir != Nulo)) Então12 PUSH(p, 2); p = p−>dir;13 Senão
14 Visita (p); p != Nulo;15 Fim enquanto;16 Fim enquanto;17 Fim;
HC AED1-Árvores 32/49
Árvores Binárias - Percursos Recursivos
A maioria dos percursos em árvores binárias são intrinsecamenterecursivos, pois cada percurso se constitui em visitar nós especiais esubárvores (problemas menores).
Percurso em Pré-Ordem;
Percurso em Ordem Simétrica;
Percurso em Pós-Ordem.
HC AED1-Árvores 33/49
Árvores Binárias - Percursos Recursivos
Percurso em Pré-Ordem (RED):
1 Visitar a raiz;2 Visitar a subárvore esquerda em Pré-Ordem;3 Visitar a subárvore direita em Pré-Ordem.
+ * A B - C / D E
HC AED1-Árvores 34/49
Árvores Binárias - Percursos Recursivos
+ * A B - C / D E
1 Pré−Ordem (p);2 Se (p != Nulo) Então3 Visita (p);4 Pré−Ordem (p−>esq);5 Pré−Ordem (p−>dir);6 Fim se
7 Fim;
Chamada externa:
1 Pré−Ordem ( T )
HC AED1-Árvores 35/49
Árvores Binárias - Percursos Recursivos
Percurso em Ordem Simétrica (ERD):
1 Visitar a subárvore esquerda In-Ordem;2 Visitar a raiz;3 Visitar a subárvore direita In-Ordem.
A * B + C - D / E
HC AED1-Árvores 36/49
Árvores Binárias - Percursos Recursivos
A * B + C - D / E
1 Ordem−simetrica (p);2 Se(p != Nulo) Então3 Ordem−simetrica (p−>esq);4 Visita (p);5 Ordem−simetrica (p−>dir);6 Fim se;7 Fim;
Chamada externa:
1 Ordem−Simetrica (T);
HC AED1-Árvores 37/49
Árvores Binárias - Percursos Recursivos
Percurso em Pós-Ordem (EDR):
1 Visitar a subárvore esquerda em Pós-Ordem;2 Visitar a subárvore direita em Pós-Ordem;3 Visitar a raiz.
A B * C D E / - +
HC AED1-Árvores 38/49
Árvores Binárias - Percursos Recursivos
A B * C D E / - +
1 Pós−Ordem (p)2 Se (p != Nulo) Então3 Pós−Ordem (p−>esq);4 Pós−Ordem (p−>dir);5 Visita (p);6 Fim se
7 Fim;
Chamada externa:
1 Pós−Ordem(T);
HC AED1-Árvores 39/49
Árvores Binárias de Busca
São árvores construídas com a seguinte regra: para cada nó r daárvore, todas as chaves da subárvore esquerda de r são menores quea chave de r, e todas as chaves da subárvore direita de r maiores.
Exemplo:
HC AED1-Árvores 40/49
Árvores Binárias de Busca
Exercício:
Desenhar todas as ABBs distintas para as chaves: 1, 2, 3 e 4, com1 na raiz?
HC AED1-Árvores 41/49
Árvores Binárias de Busca
Inserções:
Sempre é possível inserir uma chave não existente, através de umprocesso simples.4, 1, 9, 2, 11, 6, 3, 7, 12, 8, 5, 10
HC AED1-Árvores 42/49
Árvores Binárias de Busca
Exercício:
Desenhar ABBs para as chaves incluídas nas seguintes ordens:a) 1, 2, 3, 4, 5, 12, 11, 10, 6, 9, 7, 8b) 1, 12, 2, 11, 4, 10, 3, 9, 8, 5, 6, 7
HC AED1-Árvores 43/49
Árvores Binárias de Busca
O percurso em ordem simétrica obtém as chaves ordenadas.Exemplo:
Ordem:2 15 16 20 51 80 99 101 213
Essa propriedade conduz ao método de ordenação TreeSort!!!
HC AED1-Árvores 44/49
Árvores Binárias de Busca
Exercício
Colocar as chaves 1,2,3,4,5,6,7,8,9,10,11,12 na estrutura abaixo, talque tenhamos uma ABB.
HC AED1-Árvores 45/49
Árvores Binárias de Busca
Altura de uma ABBAltura mínima: árvore completa.h = blog2nc+ 1 = dlog2(n + 1)e
Altura máxima: árvore degenerada. h = n
Altura média (Knuth 73): h ≈ 1, 4log2n
HC AED1-Árvores 46/49
Árvores Binárias de Busca
Árvore de Decisão da Pesquisa Binária (ADPB)A Pesquisa Binária pode ser melhor compreendida por uma ABB,que representa o processo de busca no vetor.
HC AED1-Árvores 47/49
Árvores Binárias de Busca
Árvore de Decisão da Pesquisa Binária
É uma árvore binária completa e pode ser construídarecursivamente.
HC AED1-Árvores 48/49
Árvores Binárias de Busca
Exercício:
Desenhar a ADPB para n = 11?
HC AED1-Árvores 49/49