我正在尝试使用 TikZ 绘制 AVL 树。我了解了基本的树结构,但不确定如何在节点外绘制平衡因子(见下图)。
有什么建议么?
答案1
一种选择是将label
s 添加到node
树中的 s 中,例如
\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}
答案2
这是一个(非常晚的)forest
解决方案,只是因为我想画出弯曲的路径。
\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}