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

2 Answers 2


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

  • This works great. I didn't even know about this feature at all. Thanks for pointing it out. May 6, 2012 at 1:03
  • @hauptbenutzer No problem. For reference, it's described in section 16.10 The Label and Pin Options of the manual. May 6, 2012 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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .