domains
elem=integer
tree_t=tree(elem, tree_t, tree_t); null
predicates
sum(tree_t, elem)
create_tree(elem, tree_t)
insert_right(tree_t, tree_t, tree_t)
insert_left(tree_t, tree_t, tree_t)
clauses
create_tree(A, tree(A, null, null)).
insert_right(T, tree(A,_,B), tree(A, T, B)).
insert_left(T, tree(A,B,_), tree(A,B,T)).
sum(null, 0).
sum(tree(E, null, null), E).
sum(tree(E, R, L), Sum) :-
sum(R, Sum1),
sum(L, Sum2),
Sum = Sum1 + Sum2 + E.
goal
create_tree(1, T1),
create_tree(2, T2),
create_tree(3, T3),
create_tree(4, T4),
create_tree(5, T5),
create_tree(6, T6),
create_tree(7, T7),
write("Done creating nodes...\n"),
insert_left(T4, T2, R1),
insert_right(T5, R1, R2),
insert_left(T6, T3, R3),
insert_right(T7, R3, R4),
insert_left(R2, T1, R5),
insert_right(R3, R5, Root),
write("Done creating tree\n"),
sum(Root, Sum),
write(Sum).
Comments