1

Тема: Пролог - вывод дерева в виде DOS-дерева

Поделиться

2

Re: Пролог - вывод дерева в виде DOS-дерева

DOMAINS
treetype= tree(integer, treetype,treetype);
        empty()

       
predicates
f(treetype, integer).



clauses    

f(empty,0). /* В пустом дереве нет вершин */
f(tree(_,L,R),Kol):-
        f(L,KolL),
            /* KolL - число вершин левого поддерева */
        f(R,KolR),
            /* KolR - число вершин
             правого поддерева */
        Kol=KolL+KolR+1. /* число вершин
              исходного дерева
              получается сложением
              KolL, KolR и единицы */

%f(null,0).
%f(tree(A,X,Y), Kol):- f(X, KolX), f(Y, KolY), Kol = KolX + KolY +1.

goal
  f(tree (5,   
         tree (4,
               tree (8,empty, empty),
               tree (14,empty, empty)),
         tree (3,
        tree (7,
            tree (8,empty, empty),
            tree (1,empty, empty)),
                tree (9,
            tree (2,
                tree (4,empty, empty),
                    tree (3,empty, empty)
                  ),
            tree (7,empty, empty)
              )
            )
      ), Z
    ),write(Z), nl,fail;true.

Поделиться