Schreiben Sie ein Programm zur Verwaltung von binären Suchbäumen gemäß folgendem Implementierungsvorschlag:
DEFINITION OF MODULE BinTrees;
  TYPE ElemT*=INTEGER; 
       BinTreeT*=POINTER TO TreeNodeT;
       TreeNodeT=RECORD 
                   key:ElemT;
                   left,right:BinTreeT;
                   .......
                 END;

  PROCEDURE Init*(VAR t:BinTreeT); 
    (* Initialisierung des Baums vor der ersten Verwendung *)
  PROCEDURE CleanUp*(VAR t:BinTreeT);
    (* Aufräumungsarbeiten nach der letzten Verwendung eines Baumes *)
  PROCEDURE InOrder*(t:BinTreeT);
    (* Baumdurchlauf mit Ausgabe der Knotenwerte und des Knotenabstands von der Wurzel *)
  PROCEDURE Insert*(VAR t:BinTreeT; k:ElemT; VAR ok:BOOLEAN);
    (* Einfügen Element k in den Suchbaum, keine Balanzierung *)
  PROCEDURE Search*(t:BinTreeT; k:ElemT):BOOLEAN;
    (* Suchen Element k im Suchbaum *)
  PROCEDURE NoOfNodes*(t:BinTreeT):INTEGER;
    (* Liefert die Anzahl der Knoten im Baum *)
  PROCEDURE Height*(t:BinTreeT):INTEGER;
    (* Liefert die Höhe des Baums = Anzahl der Knotenebenen *)
  PROCEDURE Delete*(VAR t:BinTreeT; k:ElemT);
    (* Löschen des Elementes k aus dem Suchbaum *) 
END BinTrees.