OBJECT tree data left:PTR TO tree, right:PTR TO tree ENDOBJECT PROC new_set(int) DEF root:PTR TO tree NEW root root.data:=int ENDPROC root PROC add(i, set:PTR TO tree) IF set=NIL RETURN new_set(i) ELSE IF iset.data set.right:=add(i, set.right) ENDIF RETURN set ENDIF ENDPROC PROC show(set:PTR TO tree) IF set<>NIL show(set.left) WriteF('\d ', set.data) show(set.right) ENDIF ENDPROC PROC main() HANDLE DEF s, i, j Rnd(-999999) /* Initialise seed */ s:=new_set(10) /* Initialise set s to contain the number 10 */ WriteF('Input:\n') FOR i:=1 TO 50 /* Generate 50 random numbers and add them to set s */ j:=Rnd(100) add(j, s) WriteF('\d ',j) ENDFOR WriteF('\nOutput:\n') show(s) /* Show the contents of the (sorted) set s */ WriteF('\n') EXCEPT IF exception="NEW" THEN WriteF('Ran out of memory\n') ENDPROC