Reputation: 462
I'm having trouble with the following predicate:
treeToList(void, []).
treeToList(arbol(X, HI1, HD1), L) :-
treeToList(HI1, L1),
treeToList(HD1, L2),
append(L1, [X|L2], L).
maximumInList([X], X).
maximumInList([A|L], X) :-
maximumInList(L,X1),
(A > X1 -> X = A; X = X1).
maxNodeInTree(arbol, N) :-
treeToList(arbol, L),
maximumInList(L, N).
TreeToList gets a tree and returns a list with all of its nodes. Meanwhile maximumInList gets a list and returns the maximum element in the list.
Both of these predicates work fine individually, however the last one, maxNodeInTree
, is supposed to first get the list L using treeToList
which then will be passed to maximumInList
and it'll return the maximum element in the whole tree. And yet Prolog returns false
.
Any tips are appreciated!
Upvotes: 3
Views: 117
Reputation: 18663
You have a typo in the last predicate (arbol
instead of Arbol
). Try:
maxNodeInTree(Arbol, N) :-
treeToList(Arbol, L),
maximumInList(L, N).
Upvotes: 2