TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to draw an AVL tree with TikZ. I got the basic tree structure covered, but I'm not sure how to draw the balance factor outside of the node (see picture below).

Any suggestions?

enter image description here

share|improve this question
up vote 7 down vote accepted

One option is to add labels to the nodes in the tree, e.g.


   edge from parent path=
    {(\tikzparentnode.south) .. controls +(0,-.5) and +(0,.5)
                             .. (\tikzchildnode.north)},
   every node/.style={draw,circle},
   label distance=-1mm]
\node [label=330:$-1$]{50}
  child {node[label=330:$-1$] {10}}
  child {node[label=330:$0$] {20}
  child {node[label=330:$-1$] {10}}
  child {node[label=330:$-1$] {20}}

enter image description here

share|improve this answer
This works great. I didn't even know about this feature at all. Thanks for pointing it out. – hauptbenutzer May 6 '12 at 1:03
@hauptbenutzer No problem. For reference, it's described in section 16.10 The Label and Pin Options of the manual. – Torbjørn T. May 6 '12 at 1:22

Here's a (very late) forest solution just because I wanted to draw the curvy paths.



  my label/.style={label={[label distance=-5pt, font=\sffamily]-45:#1}},
  for tree={
    parent anchor=south,
    edge path={
      \noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) [out=-90,in=90] to (.child anchor)\forestoption{edge label};
    child anchor=north,
  [50, my label=-1
    [30, my label=-1
    [19, for tree={my label=0}
      [31, my label=0
    [60, for tree={my label=0}


<code>forest</code> solution

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.