Деревья уже существуют в библиотеке SWI-Prolog (ассо c) : списки ассоциаций.
Пример:
?- empty_assoc(Tree0),put_assoc(3,Tree0,three,Tree1),put_assoc(6,Tree1,six,Tree2),put_assoc(1,Tree2,one,Tree3),put_assoc(5,Tree3,five,Tree).
Tree0 = t,
Tree1 = t(3, three, -, t, t),
Tree2 = t(3, three, >, t, t(6, six, -, t, t)),
Tree3 = t(3, three, -, t(1, one, -, t, t), t(6, six, -, t, t)),
Tree = t(3, three, >, t(1, one, -, t, t), t(6, six, <, t(5, five, -, t, t), t)).
Дерево реализовано как как AVL дерево , которое является сбалансированным двоичным деревом.