
Tengo el siguiente árbol binario:
\begin{tikzpicture}[
every node/.style={draw,circle}]
\node {10}
child{node{5}}
child{node{20}}
;
\end{tikzpicture}
¿Hay alguna manera de dividir cada nodo en dos agregando una línea horizontal en el centro de cada nodo y luego agregando un valor encima y debajo de la línea?
Quiero crear un árbol binario aumentado donde cada nodo almacenará valor adicional fuera de la clave.
EDITAR:
El comportamiento más parecido que puedo conseguir es convertir los números en fracciones. Pero no se ve tan bien. No quiero que alguien piense que es una fracción en lugar de 2 números diferentes.
EDITAR DE NUEVO:
Gracias a ambos por la respuesta. Parece que funciona muy bien. El único problema al que me enfrento actualmente es que parece que también se ha agregado una línea horizontal debajo de las etiquetas. ¿Hay alguna manera de deshacerse de las líneas solo para las etiquetas?:
\begin{tikzpicture}[
every node/.style={circle split,draw}]
\node [label=330:$0$]{10\nodepart{lower}1}
child{node[label=330:$1$]{5\nodepart{lower}2}}
child{node[label=330:$2$]{20\nodepart{lower}3}}
;
\end{tikzpicture}
Respuesta1
Para usar circle split
la forma de nodo de shapes.multipart
la biblioteca TikZ:
\documentclass[tikz, border=3mm]{standalone}
\usetikzlibrary{shapes.multipart}
\begin{document}
\begin{tikzpicture}[
every node/.style={circle split,draw}
]
\node {10\nodepart{lower}1}
child{ node { 5\nodepart{lower}2}}
child{ node {20\nodepart{lower}3}}
;
\end{tikzpicture}
\end{document}
Apéndice:En caso de que desee agregar etiquetas a los nodos del árbol, no puede usar el estilo para cada nodo, ya que también se aplica a la etiqueta. La solución alternativa es:
\documentclass[tikz, border=3mm]{standalone}
\usetikzlibrary{shapes.multipart}
\begin{document}
\begin{tikzpicture}[
X/.style={circle split,draw}
]
\node[X,label=330:$0$] {10\nodepart{lower}1}
child{ node[X] { 5\nodepart{lower}2}}
child{ node[X] {20\nodepart{lower}3}}
;
\end{tikzpicture}
\end{document}
lo que da: