Как пользователь может задать бинарное дерево? - Prolog

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

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

Требуется создать оконное приложение в Visual Prolog 5.2, в котором пользователь сможет сам задавать бинарное дерево. Собственно я не могу понять каким образом это можно реализовать.

Решение задачи: «Как пользователь может задать бинарное дерево?»

textual
Листинг программы
domains
treetype = tree(integer, treetype, treetype); empty
intl=integer*
 
predicates
add_in_tree(treetype,integer,treetype)
readlist(intl)
list2tree(intl,treetype,treetype)
task(treetype)
 
clauses
add_in_tree(empty,N,tree(N,empty,empty)).
add_in_tree(tree(R,LR,RR),N,tree(R,Q,RR)) :- N < R, add_in_tree(LR,N,Q).
add_in_tree(tree(R,LR,RR),N,tree(R,LR,Q)) :- N >= R, add_in_tree(RR,N,Q).
 
readlist([H|T]) :- readint(H), !, readlist(T).
readlist([]).
 
list2tree([],T,T).
list2tree([H|Z],T,U)  :- add_in_tree(T,H,T1), list2tree(Z,T1,U).
 
task(Z) :- readlist(L), list2tree(L,empty,Z).

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

  1. В коде используется язык программирования Prolog.
  2. Задача состоит в том, чтобы создать бинарное дерево из списка целых чисел.
  3. Для решения задачи определены следующие типы данных и переменные:
    • treetype - тип данных, представляющий бинарное дерево.
    • integer - тип данных, представляющий целые числа.
    • empty - значение переменной, обозначающее пустое дерево.
    • N - переменная, представляющая число из списка.
    • R, LR, RR - переменные, представляющие значения родительского, левого и правого узлов дерева.
    • Q - переменная, представляющая значение дерева.
    • L, Z, T - переменные, представляющие список, оставшуюся часть списка и дерево соответственно.
  4. В коде определены следующие функции:
    • add_in_tree - добавляет число в дерево.
    • readlist - считывает список целых чисел.
    • list2tree - преобразует список в дерево.
    • task - основная функция, выполняющая задачу.
  5. В функции add_in_tree происходит добавление числа в дерево.
  6. В функции readlist считывается список целых чисел.
  7. В функции list2tree список преобразуется в дерево.
  8. В функции task выполняется задача, используя функции add_in_tree и readlist.
  9. Для создания дерева из списка целых чисел необходимо выполнить следующие шаги:
    • Считать список целых чисел.
    • Преобразовать список в дерево с помощью функции list2tree.
    • Вывести полученное дерево.

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


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

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

8   голосов , оценка 4 из 5
Похожие ответы