home *** CD-ROM | disk | FTP | other *** search
- signature lib_binary_tree_sig =
- sig
- pred new/1 and insert/3 and preorder/2 and inorder/2 and postorder/2.
- end.
-
- structure lib_binary_tree/lib_binary_tree_sig =
- struct
- fun tip/0 and node/3.
- new(tip).
- insert(X,node(Y,L,R),node(Y,NewL,R)) :-
- X < Y, !,
- insert(X,L,NewL).
- insert(X,node(Y,L,R),node(Y,L,NewR)) :-
- insert(X,R,NewR).
- insert(X,tip,node(X,tip,tip)).
- insert(X,node(X,L,R),node(X,L,R)).
- preorder(tip,[]).
- preorder(node(X,L,R),List) :-
- preorder(L,PartL),
- preorder(R,PartR),
- append([X|PartL],PartR,List).
- inorder(tip,[]).
- inorder(node(X,L,R),List) :-
- inorder(L,PartL),
- inorder(R,PartR),
- append(PartL,[X|PartR],List).
- postorder(tip,[]).
- postorder(node(X,L,R),List) :-
- postorder(L,PartL),
- postorder(R,PartR),
- append(PartR,PartL,Part),
- append(Part,[X],List).
- end.
-