En informatique, un tas, en anglais heap, (ou plus précisément un tas binaire) est une structure de données répondant aux conditions suivantes :
On dit qu'un arbre est ordonné en tas lorsque la propriété suivante est vérifiée : les nœuds sont ordonnés par leurs clés respectives, et :
Pour tous A et B nœuds de l'arbre tels que B soit un fils de A clé(A) ≥ clé(B)
ou
Pour tous A et B nœuds de l'arbre tels que B soit un fils de A clé(A) ≤ clé(B)
Un arbre vérifiant cette propriété est aussi appelé "arbre tournoi". Cette propriété implique que la plus grande clé (ou la plus petite) soit située à la racine du tas. Ils sont ainsi très utilisés pour implémenter les files à priorités car ils permettent des insertions en temps logarithmique et un accès direct au plus grand élément. L'efficacité des opérations effectuée sur des tas est très importante dans de nombreux algorithmes sur les graphes.
Le fait qu'un tas soit un arbre binaire complet permet de le représenter d'une manière intuitive par un tableau unidimensionnel.
Les tas sont en outre utilisés dans l'algorithme de tri par tas.
Les deux contre-exemples suivants ont pour relation d'ordre :
Attention : un tas est organisé selon une seule relation d'ordre à la fois. Il faut donc décider dès sa construction si l'on veut accéder ensuite au plus grand élément, ou au plus petit, et selon quel attribut de l'objet stocké dans l'étiquette de chaque nœud. Les manipulations suivantes de ce tas devront obligatoirement se faire par rapport à la même relation d'ordre.
Les Tas supportent les opérations suivantes :
Selon les implémentations, les primitives Ajouter-Elément et Retirer-Element invalident la propriété de Tas, ou bien appellent la procédure Tamiser pour le réorganiser.
Souvent Retirer-Element n'est appelée que pour retirer le sommet.