A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Árvores de Busca Katia Guimarães. 2 Dissemos anteriormente que a capacidade de alocação dinâmica é muito desejável em muitos casos. Mas vimos que as.

Apresentações semelhantes


Apresentação em tema: "1 Árvores de Busca Katia Guimarães. 2 Dissemos anteriormente que a capacidade de alocação dinâmica é muito desejável em muitos casos. Mas vimos que as."— Transcrição da apresentação:

1 1 Árvores de Busca Katia Guimarães

2 2 Dissemos anteriormente que a capacidade de alocação dinâmica é muito desejável em muitos casos. Mas vimos que as estruturas lineares, como listas ligadas, têm um problema por exigir acesso seqüencial. Usando Estruturas Dinâmicas

3 3 Uma solução para este problema pode ser através do uso de estruturas não lineares. Ex: Dividir a lista em duas. Estruturas não Lineares X Menores que X Maiores que X

4 4 O problema de dividir a lista em duas é que isto apenas “divide o problema em dois”. Estruturas não Lineares X Menores que X Maiores que X

5 5 Estruturas não Lineares X Uma solução mais robusta consiste em dividir a lista a cada elemento. X< Y Y< X X< Y< Z X { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.com.br/8/2263481/slides/slide_5.jpg", "name": "5 Estruturas não Lineares X Uma solução mais robusta consiste em dividir a lista a cada elemento.", "description": "X< Y Y< X X< Y< Z X

6 6 Árvores: Estruturas dinâmicas com: Folhas: nós sem filhos Raiz pai filho à dir.filho à esq. ancestral descendente

7 7 Árvores binárias onde os elementos são organizados de forma que: Árvore de Busca Binária Todos os elementos na sub-árvore esquerda de cada nó k têm valor menor ou igual ao valor no nó k. Todos os elementos na sub-árvore direita de cada nó k têm valor maior do que o valor no nó k.

8 8 Árvore binária onde os elementos são organizados de forma que: Árvore de Busca Binária y < xz > x x

9 9 Exemplo: 50, 20, 39, 8, 79, 26, 58, 15, 88, 4, 85, 96, 71, 42, 53. Árvore de Busca Binária 50 20 8 415 39 2642 79 58 5371 88 8596

10 10 Estrutura de dados dinâmica, com recuperação em tempo logarítmico. Árvore de Busca Binária 1 2 3 4

11 11 Ocorre sempre em uma folha. Inserção em Árvores de Busca Procedimento Inclui (raiz, x): Se raiz então se elemento na raiz > x então Inclui (esquerda, x) senão Inclui (direita, x) senão { aloque espaço para um nó; coloque x neste nó; retorne apontador novo nó}

12 12 Exemplo: 50, 20, 39, 8, 79, 26, 58, 15, 88, 4, 85, 96, 71, 42, 53. Árvore de Busca Binária 50 20 8 415 39 2642 79 58 5371 88 8596

13 13 Nem sempre ocorre em uma folha.  Remoção em Árvore de Busca Procedimento Remove (raiz, x) EndNó  Busca ( x ); Se ¬ EndNó então relate insucesso

14 14 Exemplo: Remove (raiz, 60) Remoção em Árvore de Busca 50 20 8 415 39 2642 79 58 5371 88 8596 raiz

15 15 Nem sempre ocorre em uma folha.  Remoção em Árvores de Busca Procedimento Remove (raiz, x) EndNó  Busca ( x ); Se ¬ EndNó então relate insucesso senão se EndNó é folha (¬ esq AND ¬ dir ) então apague apontador pai;

16 16 Exemplo: Remove (raiz, 53) Remoção em Árvore de Busca 50 20 8 415 39 2642 79 58 5371 88 8596 raiz

17 17 Exemplo: Remove (raiz, 53) Remoção em Árvore de Busca 50 20 8 415 39 2642 79 58 71 88 8596 raiz

18 18 Remoção em Árvores de Busca Procedimento Remove (raiz, x) EndNó  Busca ( x ); Se ¬ EndNó então relate insucesso senão se EndNó é folha (¬ esq AND ¬ dir ) então apague apontador pai; senão se ¬ esq XOR ¬ dir então faça pai de x apontar para filho x

19 19 Exemplo: Remove (raiz, 58) Remoção em Árvore de Busca 50 20 8 415 39 2642 79 58 71 88 8596 raiz

20 20 Exemplo: Remove (raiz, 58) Remoção em Árvore de Busca 50 20 8 415 39 2642 79 71 88 8596 raiz

21 21 Remoção em Árvores de Busca Procedimento Remove (raiz, x) EndNó  Busca ( x ); Se ¬ EndNó então relate insucesso senão se EndNó é folha (¬ esq AND ¬ dir ) então apague apontador pai; senão se ¬ esq OR ¬ dir então faça pai de x apontar para filho x senão substitua x pelo seu sucessor

22 22 Exemplo: Remove (raiz, 20) Remoção em Árvore de Busca 50 20 8 415 39 2642 79 71 88 8596 raiz Onde está o sucessor de 20?

23 23 Onde está o sucessor de um elemento cujo nó tem filho à direita? Remoção em Árvore de Busca 50 20 8 415 39 2642 raiz Um passo à direita. Tantos passos à esquerda quantos sejam necessários. Note que o nó deste elemento não tem filho à esquerda.

24 24 Exemplo: Remove (raiz, 20) Remoção em Árvore de Busca 50 26 8 415 39 42 raiz O pai do sucessor apontará para o filho à direita do nó do sucessor.

25 25 Exemplo: 50, 20, 27, 42, 40... Possível Problema 50 20 27 42 A árvore binária pode degenerar para uma estrutura próxima a uma lista ligada, e o tempo de acesso deixa de ser logarítmico. 40

26 26 Procurar manter todas as folhas mais ou menos na mesma altura. Solução PROPRIEDADE AVL: Para todo nó | altura(dir) - altura(esq) | < 2

27 27 Exemplo: 50, 20, 10,... Possível Problema 50 20 Após a inserção do elemento 10, a árvore binária perde a propriedade AVL. SOLUÇÃO: (Próxima aula) 10


Carregar ppt "1 Árvores de Busca Katia Guimarães. 2 Dissemos anteriormente que a capacidade de alocação dinâmica é muito desejável em muitos casos. Mas vimos que as."

Apresentações semelhantes


Anúncios Google