PACKAGE BODY Binary_Search_Trees_Generic IS
------------------------------------------------------------------------
--| Body of Generic Binary Search Tree Package
--| Author: Michael B. Feldman, The George Washington University
--| Last Modified: January 1996
------------------------------------------------------------------------
-- local operations, not exported
FUNCTION MakeNode (E : Element) RETURN Tree IS
-- Pre: E is defined
-- Post: returns a pointer to a tree node containing E.
Result : Tree;
BEGIN
Result := NEW BinaryTreeNode;
Result.Info := E;
RETURN Result;
END MakeNode;
PROCEDURE ConnectLeft (T : IN OUT Tree; E : Element) IS
-- Pre: T and E are defined; T.Left = NULL
-- Post: creates a node containing E and connects it to
-- the left subtree of T
BEGIN
T.Left := MakeNode (E);
END ConnectLeft;
PROCEDURE ConnectRight (T : IN OUT Tree; E : Element) IS
-- Pre: T and E are defined; T.Right = NULL
-- Post: creates a node containing E and connects it to
-- the right subtree of T
BEGIN
T.Right := MakeNode (E);
END ConnectRight;
PROCEDURE Initialize (T: IN OUT Tree) IS
BEGIN
T := NULL;
END Initialize;
FUNCTION Retrieve (T: Tree) RETURN Element IS
BEGIN
IF T = NULL THEN
RAISE NotFound;
ELSE
RETURN T.Info;
END IF;
END Retrieve;
FUNCTION Search (T: Tree; K : KeyType) RETURN Tree IS SEPARATE;
PROCEDURE Insert (T : IN OUT Tree; E : Element) IS SEPARATE;
FUNCTION FindSmallest (T : Tree) RETURN Tree IS SEPARATE;
PROCEDURE Delete (T : IN OUT Tree; K : IN KeyType) IS SEPARATE;
PROCEDURE Traverse_LNR (T : Tree) IS SEPARATE;
END Binary_Search_Trees_Generic;