2010-10-13 10 views
3

J'ai une tâche à faire et je n'arrive pas à comprendre comment faire une question. Voici ce que je dois faire:Trouver tous les éléments dans BST satisfaisant f en utilisant les suites de succès dans SML

Ecrire une fonction qui rassemble tous les éléments de l'arbre T qui satisfait la propriété p et le renvoie. Traverse l'arbre en ordre inverse. Trouver tous les éléments dans BST satisfaisant f en continuant les succès.

j'ai fait ce qui suit:

datatype 'a tree = 
Empty | Node of (int * 'a) * 'a tree * 'a tree 

fun find_all f Empty cont = cont() 
| find_all f (Node(x, l, r)) cont = if (f x) then find_all (f l (fn x => x::cont())) @ find_all (f r (fn x => x::cont())) 
     else find_all (f l (fn() => cont())) @ find_all (f r (fn() => cont())); 

Je ne comprends pas pourquoi cela ne fonctionne pas ...

Répondre

2

Voici ce que je faisais:

fun find_all f Empty cont = cont [] 
| find_all f (Node(x, l, r)) cont = if (f x) then find_all f l (fn e => find_all f r (fn t => cont ([email protected](x::t)))) 
         else find_all f l (fn t => find_all f r (fn e => cont ([email protected]))); 

Et ça marche bien

Questions connexes