Выполнить преобразование дерева в список - пролог 5.2 - Prolog

Узнай цену своей работы

Формулировка задачи:

Дан список, элементы которого — непустые бинарные деревья с числами в качестве вершин. Для каждого такого дерева выполнить преобразование дерева в спи-сок (в порядке обхода голова-левый-правый) и вывести результат в виде списка списков. Затем через пробел вывести максимальное значение среди всех элементов. Например: если дано "[bt(2,no,bt(1,no,no)), bt(3,bt(5,no,no),bt(2,no,no))]", ответом будет "[[2,1],[3,5,2]] 5".
не могу через пробел вывести максимальное значение среди всех элементов. помогите !

Решение задачи: «Выполнить преобразование дерева в список - пролог 5.2»

textual
Листинг программы
domains    
treetype = t(integer, treetype, treetype); nil    
treelist = treetype*    
il = integer*
ill = il*
predicates
determ max_s(ill, integer)
/*determ treeToList(treetype,il) - (o,i)*/
determ do(treelist, ill)    preorder(treetype,il)    conc(il,il,il)     
max_ab(integer,integer,integer).
max(il,integer).
 
 
clauses
/*treeToList(nil,[]):-!.
treeToList(t(H,LT,RT),L):- treeToList(LT,ListLT), treeToList(RT,ListRT), conc([H],ListLT,Res1), conc(Res1,ListRT,L).
*/
do([],[]).
do([T|Ts],[L1|Ls]):-preorder(T,L1),/*change(L1,L),*/do(Ts,Ls).
preorder(nil,[]):-!.
preorder(t(Root,nil,nil),[Root]):-!.
preorder(t(Root,L,R), [Root|Ls]):-preorder(L,LL),preorder(R,LR),conc(LL,LR,Ls).
 
max_ab(A,B,A):-A>B,!.
max_ab(_,B,B).
 
max([A],A):-!.
max([H|Tail],Min):-max(Tail,M),max_ab(H,M,Min).
 
max_s([A],Max):-!,max(A,Max).
max_s([T|Ts],Max):-max(T,M1),max_s(Ts,Ms),max_ab(M1,Ms,Max).
 
conc([],Ys,Ys).
conc([X|Xs],Ys,[X|Zs]):-conc(Xs,Ys,Zs).
goal
do([t(2,nil,t(1,nil,nil)),t(3,t(5,nil,nil),t(2,nil,nil))], LIST),max_s(LIST,MAX).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы