Bonjour ,
j'ai essayé de faire BST_search en version récursive terminale , j'ai crée deux versions différentes et j'ai un doute sur chacune d'elle étant terminale , pourriez vous m'aider ?
La première je ne suis vraiment pas sur , vu que je renvoie multiplicity si la clé est trouvée , et que je renvoie 0 si la clé n'a pas été trouvée , j'ai un gros doute mais 0 et multiplicity sont stockées dans la pile non ?
La seconde me semble mieux , mais parcours tout l'arbre même en ayant trouvé la valeur au début de l'arbre ..
let bst_search tree value =
let rec aux l =
match l with
|[]-> 0
|Empty::next -> aux next
|Bin((key,multiplicity),left,right)::next when key=value-> multiplicity
|Bin(_,left,right)::next -> aux (left::right::next)
in aux [tree]
let bst_search tree value =
let rec aux l to_return =
match l with
|[]-> to_return
|Empty::next -> aux next to_return
|Bin((key,multiplicity),left,right)::next-> aux (left::right::next) (if key=value then multiplicity else to_return)
in aux [tree] 0
Merci , A.P