/* bintree.q: binary search tree data structure (11-07-1993, revised 03-02-2002 AG) */ /* This file is part of the trees.q sample script. */ include searchtree; public type BinTree : SearchTree = private const nil, bin X T1 T2; public mkbintree Xs; private join T1 T2, init T, last T; mkbintree Xs:List = foldl insert nil Xs; members nil = []; members (bin X T1 T2) = members T1 ++ [X|members T2]; insert nil Y = bin Y nil nil; insert (bin X T1 T2) Y = bin X (insert T1 Y) T2 if X>Y; = bin X T1 (insert T2 Y) if XY; = bin X T1 (delete T2 Y) if XY; = member T2 Y if X