Documente Academic
Documente Profesional
Documente Cultură
subarbore stâng,
subarbore drept.
b c
domains
treetype = tree(symbol, treetype, treetype); empty
predicates
traverse: (treetype)
clauses
traverse(empty).
traverse(tree(X, Left, Right)):-
do_with(X),traverse(Left),traverse(Right).
domains
treetype = tree(string, treetype, treetype) ; empty().
predicates
traverse : (treetype).
clauses
traverse(empty).
traverse(tree(Name, Left, Right)):-
stdIO::write(Name,'\n'),
traverse(Left), traverse(Right).
clauses
ins(I, empty, t(I, empty, empty)):-!.
ins(I, t(I,L,R), t(I,L,R)):-!,write("exista in arbore").
ins(I, t(I1,L,R), t(I1,NL,R)):-I<I1,!,ins(I,L,NL).
ins(I, t(I1,L,R), t(I1,L,NR)):-ins(I,R,NR).
stergnod(t(S,LS, empty),S,LS):-!.
stergnod(t(IS,LS,RS),NI,t(IS,LS,R1)):-stergnod(RS,NI,R1).
prof. dr. ing. Cornelia Gyorodi 14
Ștergerea unui nod (continuare)
Predicatul stergnod realizează înlocuirea efectivă
prevăzută în cazul 3.
Parametri predicatului sunt:
Arborele în care se caută cheia cea mai din dreapta
Cheia nodului cel mai din dreapta
Arborele rezultat în urma transformării
Pentru subarbore dreapta vid, cheia de căutare este cea din
nodul rădăcină și subarborele nou generat va fi subarborele
stâng al arborelui dat (condiție satisfăcută prin clauza 1 a
predicatului)
predicates
search(symbol,treetype).
clauses
search(N,tree(N,_,_)) :- !;
search(N,tree(X,Y,Z)):- N<X, !,search(N,Y);
search(N,tree(X,Y,Z)):- N>X, !,search(N,Z);
search(N, empty):- fail