Suma nodurilor unui arbore binar
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Suma nodurilor unui arbore binar
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Iosif Chelu, an III-ZI, 2009.
% Facultatea de Matematica si Informatica, Universitatea Spiru Haret Bucuresti.
% http://fmi.spiruharet.ro/bodorin/aicl.html
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Prolog, TP 2.0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Suma nodurilor unui arbore binar.
CONSTANTS
t1 = t(4,t(3,t(8,t(1,e,e),e),t(0,t(2,e,e),t(2,e,t(3,e,t(5,e,e))))),t(5,e,t(1,t(4,e,e),t(3,t(5,e,e),t(2,e,e)))))
t2 = t(4,t(3,e,e),t(5,t(2,e,e),t(7,e,e)))
% t1:
% ________4________
% ____3____ 5______
% __8 __0__ ____1____
% 1 2 2__ 4 __3__
% 3__ 5 2
% 5
% t2: _______4______
% 3 _____5_____
% 2 7
DOMAINS
i=integer
r=real
lr=r*
rbt = t(r,rbt,rbt);e
PREDICATES
rbt_sum(rbt,r)
CLAUSES
% Suma nodrilor unui arbore binar
rbt_sum(e,0):-!.
rbt_sum(t(H,e,e),H):-!.
rbt_sum(t(H,L,R),S):-
rbt_sum(L,SL),
rbt_sum(R,SR),
S=H+SL+SR.