
다음과 같은 이진 트리가 있습니다.
\begin{tikzpicture}[
every node/.style={draw,circle}]
\node {10}
child{node{5}}
child{node{20}}
;
\end{tikzpicture}
각 노드의 중앙에 수평선을 추가한 다음 선 위와 아래에 값을 추가하여 각 노드를 두 개로 분할하는 방법이 있습니까?
각 노드가 키 외부에 추가 값을 저장하는 증강 이진 트리를 만들고 싶습니다.
편집하다:
내가 얻을 수 있는 가장 가까운 행동은 숫자를 분수로 만드는 것입니다. 하지만 그다지 좋아 보이지는 않습니다. 나는 누군가가 2개의 다른 숫자가 아닌 분수라고 생각하는 것을 원하지 않습니다.
다시 수정하세요:
답변해 주셔서 감사합니다. 그것은 잘 작동하는 것 같습니다. 현재 직면하고 있는 유일한 문제는 레이블 아래에도 수평선이 추가된 것 같습니다. 레이블에 대해서만 줄을 제거하는 방법이 있습니까?:
\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}
답변1
TikZ 라이브러리 의 노드 사용 circle split
모양 의 경우:shapes.multipart
\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}
부록:트리의 노드에 레이블을 추가하려는 경우 모든 노드에 스타일을 사용할 수는 없습니다. 레이블에도 적용되기 때문입니다. 해결 방법은 다음과 같습니다.
\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}
이는 다음을 제공합니다: