type avllink = ^avlnode; avlnode = record { node in the tree } element: char; bf : integer; {the balancing factor} parent, left, right: avllink; { parent, left and right subtree } end; avl = avllink; { set type } avlelement = char; function compare(e1,e2 : avlelement):integer; {+--- on entry - e1 and e2 are transfered in for a comparison | on exit - compare returns +1 iff e1 > e2 | 0 iff e1 = e2 | -1 iff e1 < e2 +----------------------------------------------------------------------} begin {compare} if e1 > e2 then compare := 1 else if e1 < e2 then compare := -1 else compare := 0; end; {compare} procedure print(var out:text; e:avlelement); {+--- on entry - e is contained in the list and is ready for output | on exit - e has been written to the corresponding out file +------------------------------------------------------------------------} begin {print} writeln (out,e:4); end; {print}