Создать список, элементами которого являются значения вершин каждого второго поддерева бинарного дерева - Prolog

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

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

Доброго времени суток. Помогите пожалуйста с такой вот задачкой, нужно создать список, элементами которого являются значения вершин каждого второго поддерева бинарного дерева. Заранее спасибо!

Решение задачи: «Создать список, элементами которого являются значения вершин каждого второго поддерева бинарного дерева»

textual
Листинг программы
domains 
chartree = tree(char, chartree, chartree);
end
predicates
do(chartree)
action(integer, chartree, chartree)
create_tree(chartree, chartree)
insert(char, chartree, chartree)
find(char,chartree)
write_tree(chartree)
repeat
goal do(end).
clauses
do(Tree):-
makewindow(1,7,7,"character tree sort",0, 0, 20, 60),
repeat,
clearwindow,
write("Enter 1 to create a tree\n"),
write("Enter 2 to show tree\n"),
write("Enter 3 to find element\n"),
write("Enter 7 to exit\n"),
readint(X),
action(X, Tree, NewTree),
do(NewTree).
        action(1, Tree, NewTree):-
            write("Enter characters or # toend: "),
            create_Tree(Tree, NewTree).
        action(2, Tree, Tree):-
            write_Tree(Tree), 
             
            write("\nPress a key to continue"),
            readchar(_)
    action(3, Tree, Tree):-
                        write("\Enter element"),
                        readchar(S),
                        find(S,Tree),
            write("\nPress a key to continue"),
            readchar(_).    
.       action(7, _, end):- exit.
        create_Tree(Tree, NewTree):- 
            readchar(C),
            C <> 0'#' , !,
            write(C, " "),
            insert(C, Tree, TempTree),
            
        create_Tree(TempTree,NewTree).
        
        create_Tree(Tree, Tree).
        
        insert(New, end, tree(New, end, end)):- !.
        
        insert(New,
                tree(Element, Left, Right),
                tree(Element, NewLeft, Right)):-
        New < Element, !,
        insert(New, Left, NewLeft).
        insert(New, tree(Element, Left, Right),
                tree(Element, Left, NewRight)):-
        insert(New, Right, NewRight). 
         
        find(Element, tree(Element,_, _)):-
                             write("\Yes")  
        find(_,end).
        find(Item,tree(X,Left, _)):-
                Item < X,!,
                        find(Item, Left).
                find(Item,tree(_, _, Right)):-
                                find(Item, Right).
        
                    write_Tree(end).
        
        write_Tree(tree(Item, Left, Right)):- 
            write_Tree(Left),
            write(Item, " "),
            write_Tree(Right).
        repeat.
        repeat:-repeat.

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


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

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

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