Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Binary heap

1,359 views

Published on

Explicação da binary heap.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Binary heap

  1. 1. Binary Heap Marcos Castro
  2. 2. Binary Heap • Uma Binary Heap é uma árvore binária completa ou quase completa. • Exemplo de árvore binária completa: Todos os níveis (exceto possivelmente o último) estão completamente preenchidos. 2
  3. 3. Binary Heap • Tem-se a Min-Heap e Max-Heap. • Min-Heap: • O valor de cada nó é maior ou igual do que o valor do seu pai, o menor valor está na raiz. • Max-Heap: • O valor de cada nó é menor ou igual do que o valor do seu pai, o maior valor está na raiz. • Os elementos estão dispostos na heap de forma que o pai sempre tem prioridade maior ou igual do que a prioridade de seus filhos. 3
  4. 4. Binary Heap • Cada posição do array é considerado pai de outras duas posições que são os filhos. • A posição “i” passa a ser pai das posições: • 2i + 1 (filho à esquerda) • 2i + 2 (filho à direita) 4
  5. 5. Binary Heap • Para inserir um novo elemento, basta inserir na primeira posição vaga do array, ou seja, ao final do array. • Inserir ao final do array quer dizer que inicialmente o novo elemento é uma folha. • Feito isso, precisa-se levar o elemento inserido para a sua respectiva posição na heap de acordo com a sua prioridade (“subir” na árvore). 5
  6. 6. Binary Heap • Vamos construir uma Min-Heap. • Exemplo: 12, 7, 6, 10, 8, 20 • Inserindo o 12... 12 6 Array: 12
  7. 7. Binary Heap • Exemplo: 12, 7, 6, 10, 8, 20 • Inserindo o 7... 12 7 Violou a propriedade da min-heap! 7 Array: 12, 7
  8. 8. Binary Heap • Exemplo: 12, 7, 6, 10, 8, 20 • Corrigindo: 12 7 7 12 8 Array: 7, 12
  9. 9. Binary Heap • Exemplo: 12, 7, 6, 10, 8, 20 • Inserindo o 6... 7 12 6 Violou a propriedade da min-heap, pois o 6 é menor do que o seu pai: 7. 9 Array: 7, 12, 6
  10. 10. Binary Heap • Exemplo: 12, 7, 6, 10, 8, 20 • Corrigindo... 6 12 7 10 Array: 6, 12, 7
  11. 11. Binary Heap • Exemplo: 12, 7, 6, 10, 8, 20 • Inserindo o 10... 6 12 7 10 Violou a propriedade da min-heap, pois o 10 é menor que o seu pai: 12. 11 Array: 6, 12, 7, 10
  12. 12. Binary Heap • Exemplo: 12, 7, 6, 10, 8, 20 • Corrigindo... 6 10 7 12 12 Array: 6, 10, 7, 12
  13. 13. Binary Heap • Exemplo: 12, 7, 6, 10, 8, 20 • Inserindo o 8... 6 10 7 12 8 Violou a propriedade da min-heap, pois o 8 é menor que o seu pai: 10. 13 Array: 6, 10, 7, 12, 8
  14. 14. Binary Heap • Exemplo: 12, 7, 6, 10, 8, 20 • Corrigindo... 6 8 7 12 10 14 Array: 6, 8, 7, 12, 10
  15. 15. Binary Heap • Exemplo: 12, 7, 6, 10, 8, 20 • Inserindo o 20... 6 8 7 12 10 20 15Array: 6, 8, 7, 12, 10, 20
  16. 16. Binary Heap • Exemplo: 12, 7, 6, 10, 8, 20 6 8 7 12 10 20 16Array: 6, 8, 7, 12, 10, 20
  17. 17. Binary Heap • Para remover, remove-se o elemento que está no topo da heap, ou seja, no início do array. • Copia-se o elemento do final para o início do array. • Leva-se o elemento que foi colocado no topo da heap para a sua respectiva posição de acordo com a sua prioridade. 17
  18. 18. Binary Heap • Removendo o 6... 6 8 7 12 10 20 18Array: 6, 8, 7, 12, 10, 20
  19. 19. Binary Heap • Removendo o 6... 8 7 12 10 20 O 20 é o último elemento do array. 19Array: 8, 7, 12, 10, 20
  20. 20. Binary Heap • Removendo o 6... 8 7 12 10 20 20Array: 20, 8, 7, 12, 10
  21. 21. Binary Heap • Removendo o 6... 8 7 12 10 20 Troca o 20 com o 7 para refazer a heap. 21
  22. 22. Binary Heap • Heap refeita! 8 20 12 10 7 22 Array: 7, 8, 20, 12, 10
  23. 23. Binary Heap - Custo • A inserção e remoção é O(logN). • Tanto na remoção como na inserção, precisa-se verificar e corrigir (se necessário) violações das propriedades da heap. 23
  24. 24. Binary Heap • Simulação da Binary Heap: • http://visualgo.net/heap.html (max heap) • https://www.cs.usfca.edu/~galles/visualization/Heap.html (min heap) 24
  25. 25. Contato mcastrosouza@live.com www.twitter.com/mcastrosouza www.geeksbr.com http://youtube.com/c/marcoscastrosouza http://marcoscastro.me https://github.com/marcoscastro 25

×