AVL Trees in TikZ: draw outside of node

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?

-

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

\documentclass{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[
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}}
};
\end{tikzpicture}
\end{document}


-
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.

\documentclass[tikz,border=5pt]{standalone}
\usepackage{forest}

\begin{document}

\begin{forest}
my label/.style={label={[label distance=-5pt, font=\sffamily]-45:#1}},
for tree={
circle,
draw,
font=\sffamily,
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}
[18]
[21]
]
[31, my label=0
]
]
[60, for tree={my label=0}
[59]
[70]
]
]
\end{forest}

\end{document}


-