Вершины дерева - Prolog

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

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

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

Решение задачи: «Вершины дерева»

textual
Листинг программы
domains
tree=nil;t(integer,tree,tree)
i=integer
L=integer*
 
predicates
n(tree,L,integer,integer).
add(L,integer,L)
append(L,L,L)
deleteodd(L,L)
 
clauses
add([H|T],E,[H|Result]):- add(T,E,Result).
add([],E,[E]).
append([], L1, L1).
append([X|L1], L2, [X|L3]):- append(L1, L2, L3).
n(nil,[],Min,Max).
n(t(H,Left,Right),L,Min,Max):-H < Max, H > Min,!,n(Left,LL,Min,Max),n(Right,LR,Min,Max), append(LL,LR,LTemp), add(LTemp,H,L).
n(t(_,Left,Right),L,Min,Max):-n(Left,LL,Min,Max),n(Right,LR,Min,Max), append(LL,LR,L).
deleteodd([],[]):-!.
deleteodd([_],[]):-!.
deleteodd([HH|[_|L]],[HH|LL]):- deleteodd(L,LL),!.
 
goal
n(t(5,t(3,t(7,nil,nil),nil),t(1,t(30,t(15,nil,nil),nil),t(4,nil,nil))),L,1,10), write("L=",L),nl, deleteodd(L,IL).

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


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

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

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