Создать список, элементами которого являются значения вершин каждого второго поддерева бинарного дерева - 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.