Skip to content
Snippets Groups Projects
cm3-code.ml 977 B
Newer Older
type 'a arbre_bin_g =
  | ABGVide
  | ABGNoeud of 'a * 'a arbre_bin_g * 'a arbre_bin_g

(** Version naive du contenu d'un arbre binaire *)
let rec contenu_naif (arb : 'a arbre_bin_g) : 'a list =
  match arb with
  | ABGVide -> []
  | ABGNoeud (e, fg, fd) -> contenu_naif fg @ (e :: contenu_naif fd)

let a1 = ABGNoeud (1, ABGVide, ABGVide)
let a2 = ABGNoeud (9, ABGVide, ABGVide)
let a3 = ABGNoeud (3, ABGVide, ABGVide)
let a4 = ABGNoeud (7, ABGVide, ABGVide)
let a5 = ABGNoeud (2, a1, a3)
let a6 = ABGNoeud (8, a4, a2)
let a7 = ABGNoeud (5, a5, a6);;

contenu_naif a7

(** [ajoute_contenu arb l] ajoute les élements de arb en tête des éléments de la
    liste l *)
let rec ajoute_contenu (arb : 'a arbre_bin_g) (l : 'a list) : 'a list =
  match arb with
  | ABGVide -> l
  | ABGNoeud (e, fg, fd) ->
      let l_fd = ajoute_contenu fd l in
      let l_e_fd = e :: l_fd in
      ajoute_contenu fg l_e_fd

let contenu (arb : 'a arbre_bin_g) : 'a list = ajoute_contenu arb []