Задача про бинарное дерево - Prolog (227024)

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

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

Дана задача, которая строит бинарное дерево и выводит сумму значений всех вершин дерева. Не могу вывести дерево и вместо суммы вершин дерева нужно выводить их количество.
Листинг программы
  1. domains
  2. tree=nil;t(integer,tree,tree)
  3. predicates
  4. n(tree,integer).
  5. clauses
  6. n(nil,0).
  7. n(t(H,Left,Right),S):-n(Left,LeftSum),n(Right,RightSum),S=LeftSum+RightSum+H.
  8. n(t(_,Left,Right),S):-n(Left,LeftSum),n(Right,RightSum),S=LeftSum+RightSum.
  9. goal
  10. n(t(5,t(3,t(7,nil,nil),nil),t(1,t(30,nil,nil),t(5,nil,nil))),S),write(S).

Решение задачи: «Задача про бинарное дерево»

textual
Листинг программы
  1. domains
  2. tree=nil;t(integer,tree,tree)
  3.  
  4. predicates
  5. n(tree,integer).
  6.  
  7. clauses
  8. n(nil,0).
  9. n(t(_,Left,Right),S):-n(Left,LeftSum),n(Right,RightSum),S=LeftSum+RightSum+1.
  10. n(t(_,Left,Right),S):-n(Left,LeftSum),n(Right,RightSum),S=LeftSum+RightSum.
  11.  
  12. goal
  13. n(t(5,t(3,t(7,nil,nil),nil),t(1,t(30,nil,nil),t(5,nil,nil))),S),write(S).

Объяснение кода листинга программы

  1. Задача: реализация предиката n для вычисления суммы элементов в бинарном дереве.
  2. Переменные: tree (nil или t(integer, tree, tree)), S (сумма элементов).
  3. Домены: tree=nil; t(integer, tree, tree).
  4. Правила:
    • n(nil, 0).
    • n(t(_, Left, Right), S) :- n(Left, LeftSum), n(Right, RightSum), S = LeftSum + RightSum + 1.
    • n(t(_, Left, Right), S) :- n(Left, LeftSum), n(Right, RightSum), S = LeftSum + RightSum.
  5. Цель: n(t(5, t(3, t(7, nil, nil), nil), t(1, t(30, nil, nil), t(5, nil, nil))), S), write(S).
  6. Вывод: 46.

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


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

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

13   голосов , оценка 4.077 из 5

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

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

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