Adloun

Vérifier la propriété de tas

Exercice · OCaml (option informatique), chapitre 19 — Files de priorité : le tas binaire

Énoncé

Écrire est_un_tas d n : le tableau d (longueur utile n) respecte-t-il la propriété de tas ?

Corrigé

let est_un_tas d n =
  let ok = ref true in
  for i = 1 to n - 1 do
    if d.((i - 1) / 2) > d.(i) then ok := false   (* parent > enfant : violé *)
  done;
  !ok

Il suffit de vérifier, pour chaque nœud i (sauf la racine), qu'il n'est pas plus petit que son parent. Parcourir une seule fois les indices 1..n-1 suffit : chaque relation parent-enfant est ainsi testée. Coût .

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.