Write a procedure that adds an element t to a set represented as an (ordered) T-tree. (If t is already present, nothing should be done.)
The procedure get_free (var i : integer) produces a free integer i in 1 . . n (that is, an integer that is not a number of any vertex) and updates the free list. (For simplicity, we assume that free integers exist.)
procedure get_free (var i: integer) ; begin {free <> null} end ; get_free (root) ; end else begin x := root ; if t < val [x] then begin x := left Ix]; end else begin {t > val [x]} x := right [x]; end; end ; if t <> val [x] then begin {t is not in the tree) get_free (i); I left [x] := i; end else begin {t > val [x]} right [x] := i; end; end; end; |