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

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

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

написать программу для подсчета количества листьевых вершин бинарного дерева, значения которых лежат в определенном диапазоне
Листинг программы
  1. domains
  2. type = integer
  3. tree = tree(type,tree,tree); empty
  4. predicates
  5. tree_leaves(tree,integer)
  6. clauses
  7. tree_leaves(empty,0)./* в пустом дереве
  8. листьев нет */
  9. tree_leaves(tree(_,empty,empty),1):-!./* в дереве с одним корнем -
  10. один лист */
  11. tree_leaves(tree(_,L,R),N):-
  12. tree_leaves(L,N1), /* N1 - количество листьев
  13. в левом поддереве */
  14. tree_leaves(R,N2),
  15. /* N2 - количество листьев
  16. в правом поддереве */
  17. N=N1+N2.
  18. goal
  19. Tree=tree(5,tree(3,tree(6, empty, empty),tree(4, empty, empty)),
  20. tree(10,tree(2, empty, empty),empty)),
  21. tree_leaves(Tree,N),write(N),nl.
помогите понять какой диапазон, это то есть вершины с этими значениями?

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

textual
Листинг программы
  1. domains
  2. tree=nil;t(integer,tree,tree)
  3. i=integer
  4. L=integer*
  5.  
  6. predicates
  7. n(tree,L,integer,integer).
  8. add(L,integer,L)
  9. append(L,L,L)
  10. deleteodd(L,L)
  11.  
  12. clauses
  13. add([H|T],E,[H|Result]):- add(T,E,Result).
  14. add([],E,[E]).
  15. append([], L1, L1).
  16. append([X|L1], L2, [X|L3]):- append(L1, L2, L3).
  17. n(nil,[],Min,Max).
  18. 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).
  19. n(t(_,Left,Right),L,Min,Max):-n(Left,LL,Min,Max),n(Right,LR,Min,Max), append(LL,LR,L).
  20. deleteodd([],[]):-!.
  21. deleteodd([_],[]):-!.
  22. deleteodd([HH|[_|L]],[HH|LL]):- deleteodd(L,LL),!.
  23.  
  24. goal
  25. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы