Nous vous demandons d'implémenter un tas d'entiers binaire de priorité maximale. Un tas binaire est une structure de données pouvant être représentée comme un arbre binaire. Chaque noeud a au maximum deux noeuds enfants (gauche et droit). La valeur de la donnée contenue dans un noeud (dans notre cas un nombre entier) doit être supérieure ou égale à celles contenues dans ses éventuels enfants. La racine de cet arbre contient ainsi la valeur la plus grande du tas (et ceci en permanence). Tous les niveaux de cet arbre doivent être pleins, à l'exception du dernier. Si ce dernier niveau n'est pas entièrement rempli, il doit l'être de gauche à droite, comme sur la figure ci-dessous.
<p><ahref="https://commons.wikimedia.org/wiki/File:Max-Heap.svg#/media/Fichier:Max-Heap.svg"><imgsrc="https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Max-Heap.svg/1200px-Max-Heap.svg.png"alt="Max-Heap.svg"></a>Un tas-max. Par <ahref="//commons.wikimedia.org/w/index.php?title=User:Ermishin&action=edit&redlink=1"class="new"title="User:Ermishin (page does not exist)">Ermishin</a> — <spanclass="int-own-work"lang="fr">Travail personnel</span>, <ahref="https://creativecommons.org/licenses/by-sa/3.0"title="Creative Commons Attribution-Share Alike 3.0">CC BY-SA 3.0</a>, <ahref="https://commons.wikimedia.org/w/index.php?curid=12251273">Lien</a></p>
<p><ahref="https://commons.wikimedia.org/wiki/File:Max-Heap.svg#/media/Fichier:Max-Heap.svg"><imgsrc="https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Max-Heap.svg/1200px-Max-Heap.svg.png"alt="Max-Heap.svg"width="500"><br></a>Un tas-max. Par <ahref="//commons.wikimedia.org/w/index.php?title=User:Ermishin&action=edit&redlink=1"class="new"title="User:Ermishin (page does not exist)">Ermishin</a> — <spanclass="int-own-work"lang="fr">Travail personnel</span>, <ahref="https://creativecommons.org/licenses/by-sa/3.0"title="Creative Commons Attribution-Share Alike 3.0">CC BY-SA 3.0</a>, <ahref="https://commons.wikimedia.org/w/index.php?curid=12251273">Lien</a></p>
Vous devrez fournir deux implémentations, la première à l'aide d'une liste (tableau) et la deuxième à l'aide d'un arbre proprement dit (sans réutiliser de structure d'arbre existante dans la librairie standard Java). Utilisez une bonne abstraction permettant de comparer les deux implémentations. Votre code devra être placé dans le package `ch.hepia.structure`.
...
...
@@ -118,7 +118,7 @@ Vous devrez fournir deux implémentations, la première à l'aide d'une liste (t
- Étant donné un noeud à l'index i > 0, son parent est à l'index `(i-1) / 2` (arrondi à l'entier inférieur).
<p><ahref="https://commons.wikimedia.org/wiki/File:Binary_tree_in_array.svg#/media/Fichier:Binary_tree_in_array.svg"><imgsrc="https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Binary_tree_in_array.svg/1200px-Binary_tree_in_array.svg.png"alt="Binary tree in array.svg"></a>Un tas binaire implémenté avec un tableau, domaine public, <ahref="https://commons.wikimedia.org/w/index.php?curid=488485">Lien</a></p>
<p><ahref="https://commons.wikimedia.org/wiki/File:Binary_tree_in_array.svg#/media/Fichier:Binary_tree_in_array.svg"><imgsrc="https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Binary_tree_in_array.svg/1200px-Binary_tree_in_array.svg.png"alt="Binary tree in array.svg"width="500"><br></a>Un tas binaire implémenté avec un tableau, domaine public, <ahref="https://commons.wikimedia.org/w/index.php?curid=488485">Lien</a></p>
### Méthodes à implémenter
Chaque implémentation devra fournir ces méthodes :