: , , ... , .
1. , .
2. , , , .
:
Traverse(empty).
traverse(tree(X,Y,Z):- do something with X, traverse(Y),
Traverse(Z).
, 䳿, , .7.2, , .
Domains
treetype = tree(string, treetype, treetype);
Empty()
Predicates
Print_all_elements(treetype)
Clauses
Print_all_elements(empty).
print_all_elements(tree(X,Y,Z)):- write(X), nl,
Print_all_elements(Y),
Print_all_elements(Z).
goal: print_all_elements(tree("Cathy", tree("Michael",
tree("Charles", empty, empty),
tree("Hazel", empty, empty)),
tree("Melody", tree("Jim", empty,
empty), tree("Eleanor", empty,
Empty)))).
.7.2.
.
' ' .
:
Create_tree(N, tree(N,empty,empty)).
: " N , tree(N,empty,empty) , .
. , . ³ , .
Insert_left(X, tree(A, _, B), tree(A,X,B)).
, ,
tree('Michael ', empty, empty)
tree('Cathy', empty, empty). , :
goal: insert_left(tree('Michael',empty,empty),
tree('Cathy',empty,empty),
T)
T tree('Cathy',
tree(Michael',empty,empty),
Empty).
, . , .7.3., . , , , .
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* . *
* create_tree(A, B) A B *
* insert_left(A, B, C) A B, *
* C *
* insert_right(A, B, C) A B, *
* *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */