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}