Advertisement
csmine

Option info - Arbres binaires entiers/non entiers

Apr 12th, 2019
933
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 1.67 KB | None | 0 0
  1. (* Entraînement aux arbres *)
  2.  
  3. (* Créations du type d'arbre entier, et d'arbre non entier *)
  4. type 'a tree = Vide | Node of 'a*'a tree*'a tree;;
  5.  
  6. type ('f,'n) abe = Feuille of 'f | Noeud of 'n* ('f,'n) abe *('f,'n) abe;;
  7.  
  8. let exemple1 =
  9. Noeud(  1,
  10.         Noeud(  2,
  11.                 Feuille 4,
  12.                 Noeud(  5,
  13.                         Feuille 7,
  14.                         Feuille 8)),
  15.         Noeud( 3,
  16.                 Feuille 0,
  17.                 Noeud(  6,
  18.                         Feuille 9,
  19.                         Feuille 0)));;
  20. let toto =
  21. Node(   1,
  22.         Node(   2,
  23.                 Node( 4,Vide,Vide),
  24.                 Node(   5,
  25.                         Node(7,Vide,Vide),
  26.                         Node(8,Vide,Vide))),
  27.         Node( 3,
  28.                 Vide,
  29.                 Node(   6,
  30.                         Node(9,Vide,Vide),
  31.                         Vide)));;
  32.  
  33.  
  34. let parcours_prefixe arbre =
  35.     let rec aux arbre arenvoyer = match arbre with
  36.     |Vide -> arenvoyer
  37.     |Node (n,fg,fd) -> aux fd (aux fg (n::arenvoyer)) in
  38.     List.rev (aux arbre []);;
  39.  
  40. let parcours_infixe arbre =
  41.     let rec aux arbre arenvoyer = match arbre with
  42.     |Vide -> arenvoyer
  43.     |Node (n,fg,fd) -> aux fd (n::(aux fg (n::arenvoyer))) in
  44.     List.rev (aux arbre []);;
  45.  
  46. let parcours_postfixe arbre =
  47.     let rec aux arbre arenvoyer = match arbre with
  48.     |Vide -> arenvoyer
  49.     |Node (n,fg,fd) -> n::(aux fd (aux fg (arenvoyer))) in
  50.     List.rev (aux arbre []);;
  51.  
  52. let parcours_profondeur arbre =
  53.     let rec aux liste_arbre deja_vu = match liste_arbre with
  54.     |[] -> deja_vu
  55.     |(Feuille f)::t -> aux t (f::deja_vu)
  56.     |(Noeud (n,fg,fd))::t -> aux (fg::fd::t) (n::deja_vu)
  57.     in List.rev (aux [arbre] []);;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement