Я новичок в SML. Я пытаюсь проверить, существует ли данное значение в двоичном дереве или нет. Ниже приведен фрагмент кода. После исполнения он даетПроверка наличия данного значения в двоичном дереве
Warning : match nonexhaustive (n,Node (t1, j, t2)) => ...
Я не могу понять, почему он показывает этот путь. Наверное, я рассмотрел все возможные случаи. Может ли кто-нибудь дать мне подсказку или ссылку, которая будет полезна для удаления этого предупреждения.
datatype inttree = Empty | Node of inttree * int * inttree;
(*find(n,K) here n is the key that we have to find in inttree K*)
val rec find = fn(n, Node(t1,j,t2)) =>
let
val t = Node(t1, j, t2)
val compare = fn(i,j) => i = j
val find' =
fn (n,Empty) => false (* if we have reached the empty node then we are not able to find the key therefore return false *)
| (n,Node(t1,j,t2)) =>
if compare(n,j)
then true (* if value n and j are equal we have found the key n in the tree*)
else find(n,t1) orelse find(n,t2) (* if the value is not equal check in left subtree if found return true else check in the right subtree*)
in
find'(n,t)
end;
Вы никогда не определить ' find (n, Empty) 'Я не совсем уверен, что вы делаете со всеми этими анонимными функциями и« сравниваете ». Вы делаете это намного сложнее, чем нужно. –
@ Джон Коулман, если комментарии помогут?. Пожалуйста, помогите мне, как я могу сделать это менее сложным. Заранее спасибо – user1313623