中央の水平線で区切られたノードに2つの値を保存します

中央の水平線で区切られたノードに2つの値を保存します

次のバイナリツリーがあります:

\begin{tikzpicture}[
           every node/.style={draw,circle}]
        \node {10}
            child{node{5}}
            child{node{20}}
            ;
\end{tikzpicture}

バイナリツリー

各ノードの中央に水平線を追加し、その線の上下に値を追加して、各ノードを 2 つに分割する方法はありますか?

各ノードがキーの外部に追加の値を格納する拡張バイナリ ツリーを作成したいと考えています。

編集:

最も近い動作は、代わりに数字を分数にすることです。しかし、見た目はあまり良くありません。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}

これにより、次のようになります。

ここに画像の説明を入力してください

関連情報