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

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

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

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

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

textual
Листинг программы
domains
tree=nil;t(integer,tree,tree)
 
predicates
n(tree,integer).
 
clauses
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.
 
goal
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
Похожие ответы