중간에 수평선으로 구분된 노드에 2개의 값을 저장합니다.

중간에 수평선으로 구분된 노드에 2개의 값을 저장합니다.

다음과 같은 이진 트리가 있습니다.

\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}

이는 다음을 제공합니다:

여기에 이미지 설명을 입력하세요

관련 정보