Adloun

OCaml (option informatique) · Chapitre 3 · Exercice de TD

Appartenance dans un arbre binaire de recherche

Types sommes et arbres · niveau 3 (difficile)

Énoncé

Un arbre binaire de recherche (ABR) est un 'a arbre tel que, en tout nœud, toutes les étiquettes du sous-arbre gauche sont inférieures à l'étiquette, et celles du sous-arbre droit supérieures. Écrire appartient x a qui exploite cette propriété pour ne descendre que d'un côté.

Corrigé

let rec appartient x a =
  match a with
  | Vide -> false
  | Noeud (g, v, d) ->
      if x = v then true
      else if x < v then appartient x g
      else appartient x d

La propriété d'ABR permet, à chaque nœud, d'éliminer la moitié de l'arbre : si x < v, inutile de chercher à droite. Sur un arbre équilibré de nœuds, la recherche coûte — bien mieux que le parcours linéaire d'une liste.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre