Определить на каком уровне в дереве находится его максимальный элемент - Prolog

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

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

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

Решение задачи: «Определить на каком уровне в дереве находится его максимальный элемент»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4. treetype = tree(treetype, integer, treetype); nil
  5.  
  6. predicates
  7. max(int,int,int)
  8. max_in_tree(treetype,int)
  9. search_lv(treetype,int,int,intl)
  10. append(intl,intl,intl)
  11. task(treetype,intl)
  12.  
  13. clauses
  14.  
  15. append([],Y,Y).
  16. append([H|T],Y,[H|R]) :- append(T,Y,R).
  17.  
  18. max(M,N,M) :- M>=N.
  19. max(M,N,N) :- N>M.
  20.  
  21. max_in_tree(tree(nil,M,nil),M) :- !.
  22. max_in_tree(tree(nil,M,R),N)   :- max_in_tree(R,RR),max(RR,M,N).
  23. max_in_tree(tree(L,M,nil),N)   :- max_in_tree(L,LL),max(LL,M,N).
  24. max_in_tree(tree(L,V,R),N) :- max_in_tree(L,LL), max_in_tree(R,RR), max(LL,RR,LR),max(V,LR,N).
  25.  
  26. search_lv(nil,_,_,[]) :- !.
  27. search_lv(tree(LL,V,RR),V,L,[L|T]) :- L1=L+1, search_lv(LL,V,L1,T1), search_lv(RR,V,L1,T2), append(T1,T2,T).
  28. search_lv(tree(LL,Z,RR),V,L,T) :- Z <> V, L1=L+1, search_lv(LL,V,L1,T1), search_lv(RR,V,L1,T2), append(T1,T2,T).
  29.    
  30. task(T,R) :- max_in_tree(T,M), write(M), nl, search_lv(T,M,0,R).

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


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

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

9   голосов , оценка 3.889 из 5

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

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

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