Бинарные деревья - Prolog (226747)

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

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

Здравствуйте, помогите решить задачу для друга. Бинарные деревья задаются с помощью тернарного функтора tree(Left,Root,Right), где Root - элемент, находящийся в вершине, а Left и Right - соответственно левое и правое поддерево. Пустое дерево изображается атомом nil. Следующий терм является примером более сложного дерева tree(nil, 5, tree(nil, 6, tree(tree(nil, 8, nil), 10, nil))). Напишите предикат, p(+T, ?N), который вычисляет наибольшее число N в вершинах дерева T. В приведенном примере должно получиться 10.

Решение задачи: «Бинарные деревья»

textual
Листинг программы
  1. domains
  2. int=integer
  3. treetype = tree(treetype, integer, treetype); nil
  4.  
  5. predicates
  6. max2(int,int,int)
  7. max3(int,int,int,int)
  8. p(treetype,int)
  9.  
  10. clauses
  11.  
  12. max2(M1,M2,M1) :- M1>=M2.
  13. max2(M1,M2,M2) :- M2>=M1.
  14.  
  15. max3(M1,M2,M3,M1) :- M1>=M2, M1>=M3.
  16. max3(M1,M2,M3,M2) :- M2>=M1, M2>=M3.
  17. max3(M1,M2,M3,M3) :- M3>=M2, M3>=M1.
  18.  
  19. p(tree(nil,N,nil),N).
  20. p(tree(L,N,nil),M) :- p(L,M1), max2(M1,N,M).
  21. p(tree(nil,N,R),M) :- p(R,M1), max2(M1,N,M).
  22. p(tree(L,N,R),M)   :- p(L,M1), p(R,M2), max3(M1,M2,N,M).
  23.  
  24. goal
  25.  
  26. p(tree(nil, 5, tree(nil, 6, tree(tree(nil, 8, nil), 10, nil))),M), write(M), nl.

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


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

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

12   голосов , оценка 4.25 из 5

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

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

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