
Eu tenho a seguinte árvore binária:
\begin{tikzpicture}[
every node/.style={draw,circle}]
\node {10}
child{node{5}}
child{node{20}}
;
\end{tikzpicture}
Existe uma maneira de dividir cada nó em dois adicionando uma linha horizontal no centro de cada nó e adicionando um valor acima e abaixo da linha?
Quero criar uma árvore binária aumentada onde cada nó armazenará valores adicionais fora da chave.
EDITAR:
O comportamento mais próximo que posso obter é transformar os números em frações. Mas não parece tão legal. Não quero que alguém pense que é uma fração em vez de dois números diferentes.
EDITAR NOVAMENTE:
Obrigado a ambos pela resposta. Parece funcionar muito bem. O único problema que estou enfrentando atualmente é que parece haver uma linha horizontal adicionada também aos rótulos. Existe uma maneira de se livrar das linhas apenas dos rótulos?:
\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}
Responder1
Para o nó, use circle split
o formato da shapes.multipart
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}
Termo aditivo:Caso você goste de adicionar rótulos aos nós da árvore, não poderá usar o estilo para cada nó, pois ele também é aplicado ao rótulo. A solução alternativa é:
\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}
que dá: