Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
5 / 5 / 5
Регистрация: 20.04.2015
Сообщений: 196
1

Для каждого бинарного дерева выполнить преобразование дерева в список, результат вывести в виде списка списков

14.04.2018, 21:57. Показов 2391. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните почему не работает,

задание было таким " Дан список, элементы которого — непустые бинарные деревья с числами в качестве вершин. Для каждого такого дерева выполнить преобразование дерева в список (в порядке обхода левый-голова-правый) и вывести результат в виде списка списков. Затем через пробел вывести минимальное значение среди всех элементов""

код такой
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Domains
treetype=bt(integer,treetype, treetype); no
treelist=treetype*
il=integer*
ill=il*
 
Predicates
determ min_s(ill, integer)
determ do(treelist, ill) preorder(treetype, il) conc(il,il,il)
min_ab(integer,integer,integer).
min(il,integer).
 
Clauses
do([],[]).
do([T|Ts],[L1|Ls]):-preorder(T,L1),do(Ts,Ls).
preorder(no,[]):-!.
preorder(bt(Root,no,no),[Root]):-!.
preorder(bt(Root,L,R),[Root|Ls]):-preorder(L,LL), preorder(R,LR),conc(LL,LR,Ls).
min_ab(A,B,A):-A<B,!.
min_ab(_,B,B).
min([A],A):-!.
min([H|Tail],Max):-min(Tail,M),min_ab(H,M,Max).
min_s([A],Min):-!,min(A,Min).
min_s([T|Ts],Min):-min(T,M1),min_s(Ts,Ms),min_ab(M1,MS,Min).
conc([],Ys,Ys).
conc([X|Xs],Ys,[X|Zs]):-conc(Xs,Ys,Zs).
 
Goal
do([bt(2,no,bt(1,no,no)),bt(5,bt(2,no,no),bt(3,no,no))],LIST),min_s(LIST,Min).
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2018, 21:57
Ответы с готовыми решениями:

преобразование списка смежных вершин (мультисписок) в связный список узлов бинарного дерева
товарищи, помогите сообразить алгоритм, после праздников туго идет.. спасибо

Формирование списка товаров склада в виде бинарного дерева
Помогите пожалуйста.. решить вот эту задачку( Информация о товарах на складе организована как...

Выполнить преобразование дерева в список - пролог 5.2
Дан список, элементы которого — непустые бинарные деревья с числами в качестве вершин. Для каждого...

Вывод бинарного дерева в виде дерева
Помогите пожалуйста вывести дерево в консоль в виде дерева. Саму структуру я написал и обход...

1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37300 / 20734 / 4272
Регистрация: 12.02.2012
Сообщений: 34,122
Записей в блоге: 14
16.04.2018, 16:36 2
Лучший ответ Сообщение было отмечено Valentin-TT как решение

Решение

Вот рабочий код (Турбо-Пролог):

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
DOMAINS
 
int=integer
tree=tr(int,tree,tree);empty
intl=int*
intll=intl*
tl=tree*
 
predicates
 
app(intl,intl,intl)
tree2list(tree,intl)
ltree(tl,intll)
minl(intl,int)
minll(intll,int)
 
 
clauses
 
app([],X,X).
app([H|T],X,[H|Y]) :- app(T,X,Y).
 
tree2list(empty,[]).
tree2list(tr(X,L,R),Z) :- tree2list(L,LL), tree2list(R,RR), app(LL,[X],T), app(T,RR,Z).
 
ltree([],[]).
ltree([T|TT],[Z|ZZ]) :- tree2list(T,Z), ltree(TT,ZZ).
 
minl([X],X).
minl([H|T],M) :- minl(T,M),M<H.
minl([H|T],H) :- minl(T,M),M>=H.
 
minll([X],Z) :- minl(X,Z).
minll([H|R],MH) :- minll(R,M),minl(H,MH),MH<M.
minll([H|R],M) :- minll(R,M),minl(H,MH),MH>=M.
 
goal
 
ltree([tr(5,empty,empty),tr(6,tr(1,empty,empty),tr(-8,empty,empty))
, tr(7,tr(8,empty,empty),empty)],U),
write(U),nl,minll(U,M),write(M),nl.
1
16.04.2018, 16:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2018, 16:36
Помогаю со студенческими работами здесь

Вывести данные из контейнера set в виде бинарного дерева
Ввожу данные (int) с помощью контейнера set. Как их вывести в виде бинарного дерева?

Создать список, элементами которого являются значения вершин каждого второго поддерева бинарного дерева
Доброго времени суток. Помогите пожалуйста с такой вот задачкой, нужно создать список, элементами...

В рабочей программе добавить для дерева бинарного поиска нахождение отрицательных значений узлов дерева
Полностью готовая программа, но что дописать в мейне чтобы он выводил произведение отрицательных...

Вывод бинарного дерева на экран в виде "дерева"
основная задача: подсчет количества листьев. проблема: при просмотре хочу выводить бин. дерево, в...

Для каждого бинарного дерева найти среднее арифметическое положительных вершин
Дано число и список, элементы которого — непустые бинарные деревья с числами в качестве вершин. Для...

Необходимо реализовать структуру для хранения данных в виде бинарного дерева
Ассоциативный массив должен храниться в виде бинарного дерева


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru