Voltar

Problema - Head, Heap! - Estrutura de dados

0 Curtidas

Como todo heap é uma árvore completa, ele pode ser armazenado em um vetor, o que simplifica muito o processamento. Uma árvore completa tem seus elementos armazenados no vetor na ordem de seus níveis, em geral da esquerda para a direita. Isso quer dizer que a raiz da árvore (nível 0) fica no primeiro elemento do vetor, e os nós do nível 1 ficam nos elementos 1 e 2 (o problema restringia-se a árvores binárias). Os elementos do nível 2 ocupam os elementos 3, 4, 5 e 6, e assim por diante. A quantidade máxima de elementos em um nível é sempre igual ao dobro da quantidade de elementos do nível anterior, ou seja, o nível N tem 2 N elementos. Portanto a árvore da figura 3 poderia ser armazenada em um vetor da seguinte forma:

Para determinar se tratava-se de um max-heap, era necessário percorrer, para cada elemento, a posição dos seus descendentes e verificar se todos eram menores ou iguais ao elemento raiz daquela subárvore. Se para algum elemento isso não fosse verdade, aquela árvore não era um max-heap. O mesmo raciocínio vale para o min-heap, apenas mudando o operador de comparação, pois nesse caso nenhum descendente pode ser menor que o seu ancestral direto.

Autor: Antonio Cesar de Barros Munari (Fatec Sorocaba)

Problemas relacionados
  Nome Comentário
Heap, heap! ---

Comentários


Postagens neste fórum só são permitidas para membros com conta ativa. Por favor, efetue login or cadastro para postar.