Disons que j'ai construit un tas en utilisant heappush
pour mettre 10 nombres sur le tas.Utiliser "remove" ou "pop" pour supprimer des éléments de heapq
Maintenant, je veux supprimer certains éléments, le nième élément ou un nombre particulier. Comme le tas est juste une liste, je peux utiliser pop(i)
ou remove
pour faire cela. Après avoir utilisé pop()
et remove()
, la liste est-elle encore un tas ou dois-je à nouveau heapify
la liste?
Si vous modifiez régulièrement la structure de données sous-jacente, vous pouvez reconsidérer votre approche. J'ai trouvé que la violation du tas signifie généralement que je n'ai pas vraiment besoin d'un tas, ou que je peux accomplir ce dont j'ai besoin sans violer le contrat de tas. –