trees.sty: A Macro for Drawing Binary or Ternary Trees

Peter Vanroose Peter.Vanroose@esat.kuleuven.ac.be

18 april 1990

The following macros let you draw a (binary or ternary) tree of any size. For each ”internal node”, you only have to specify which are the descending nodes, with a \branch command (\tbranch for ternary node.). To this end, nodes are given a label (only used internally!). These macros will give you some ideas on designing similar things for, e.g., digital circuits.

Trees are constructed with labels on the branches (default 0 and 1), and with text (e.g., its name or value) on the nodes. The first parameter to \branch (0, 1, 2 or 3) determines the steepness of the branches.

Example:

\begin{picture}(100,100)(-50,10)
\unitlength=2mm
\branchlabels ABC       % 012 is the default
\root(2,10) 0.          % root at absolute coordinate (2,10)
                        % its (internally used) label is 0
                        % the space before the 0 is obligatory
\branch2{16} 0:1,2.     % node 0 (i.e., the root) has children 1 and 2
                        % the text "1.00" is written above it
                        % space is optional, :,. are obligatory
  \leaf{4}{$u_1$} 1.    % node 1 is a leaf
                        % "0.45" written above, "$u_1$" to the right
  \branch2{12} 2:3,7.   % branch to node 3 goes up, and has label A
    \tbranch2{9} 3:4,5,6.
      \leaf{4}{$u_3$}4. % the symbols 0--7 can be replaced by anything
      \leaf{3}{$u_4$}5.
      \leaf{2}{$u_5$}6.
    \leaf{3}{$u_2$}  7.
\end{picture}

will typeset something like:

[figure: 16; A; B; 4; u_{1}; 12; A; B; 9; A; B; C; 4; u_{3}; 3; u_{4}; 2; u_{5}; 3; u_{2}]