Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
56
Task/Tree-traversal/Prolog/tree-traversal.pro
Normal file
56
Task/Tree-traversal/Prolog/tree-traversal.pro
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
tree :-
|
||||
Tree= [1,
|
||||
[2,
|
||||
[4,
|
||||
[7, nil, nil],
|
||||
nil],
|
||||
[5, nil, nil]],
|
||||
[3,
|
||||
[6,
|
||||
[8, nil, nil],
|
||||
[9,nil, nil]],
|
||||
nil]],
|
||||
|
||||
write('preorder : '), preorder(Tree), nl,
|
||||
write('inorder : '), inorder(Tree), nl,
|
||||
write('postorder : '), postorder(Tree), nl,
|
||||
write('level-order : '), level_order([Tree]).
|
||||
|
||||
preorder(nil).
|
||||
preorder([Node, FG, FD]) :-
|
||||
format('~w ', [Node]),
|
||||
preorder(FG),
|
||||
preorder(FD).
|
||||
|
||||
|
||||
inorder(nil).
|
||||
inorder([Node, FG, FD]) :-
|
||||
inorder(FG),
|
||||
format('~w ', [Node]),
|
||||
inorder(FD).
|
||||
|
||||
postorder(nil).
|
||||
postorder([Node, FG, FD]) :-
|
||||
postorder(FG),
|
||||
postorder(FD),
|
||||
format('~w ', [Node]).
|
||||
|
||||
|
||||
level_order([]).
|
||||
|
||||
level_order(A) :-
|
||||
level_order_(A, U-U, S),
|
||||
level_order(S).
|
||||
|
||||
level_order_([], S-[],S).
|
||||
|
||||
level_order_([[Node, FG, FD] | T], CS, FS) :-
|
||||
format('~w ', [Node]),
|
||||
append_dl(CS, [FG, FD|U]-U, CS1),
|
||||
level_order_(T, CS1, FS).
|
||||
|
||||
level_order_([nil | T], CS, FS) :-
|
||||
level_order_(T, CS, FS).
|
||||
|
||||
|
||||
append_dl(X-Y, Y-Z, X-Z).
|
||||
Loading…
Add table
Add a link
Reference in a new issue