/* bst.pl * * CS 313 example * * binary search trees of integers */ /* example trees */ mytree1(node(5, node(3, nil, nil), node(8, node(7, nil, nil), node(9, nil, nil)))). mytree2(node(2, node(1, nil, nil), T)) :- mytree1(T). /* printing */ show(T) :- show1(T, 0). show1(nil, _). show1(node(N, L, R), Indent) :- Indent2 is Indent + 4, show1(R, Indent2), tab(Indent), write_ln(N), show1(L, Indent2). /* testing for membership */ find(X, node(X, _, _)). find(X, node(N, L, _)) :- XN, find(X, R). /* sample output: ?- show(node(6, node(3, nil, nil), node(7, nil, nil))). 7 6 3 ?- mytree1(T), show(T). 9 8 7 5 3 T = node(5, node(3, nil, nil), node(8, node(7, nil, nil), node(9, nil, nil))) ?- mytree2(T), show(T). 9 8 7 5 3 2 1 T = node(2, node(1, nil, nil), node(5, node(3, nil, nil), node(8, node(7, nil, nil), node(9, nil, nil)))) ?- mytree1(T), find(7, T). T = node(5, node(3, nil, nil), node(8, node(7, nil, nil), node(9, nil, nil))) Yes ?- mytree2(T), find(4, T). No */