将 2 个值存储在中间用水平线分隔的节点中

将 2 个值存储在中间用水平线分隔的节点中

我有以下二叉树:

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

二叉树

有没有办法通过在每个节点的中心添加一条水平线,然后在线的上方和下方添加一个值来将每个节点一分为二?

我想创建一个增强二叉树,其中每个节点将在键之外存储额外的值。

编辑:

我能得到的最接近的行为是将数字变成分数。但看起来不太好看。我不希望有人认为它是一个分数而不是两个不同的数字。

再次编辑:

谢谢你们的回答。它似乎效果很好。我目前面临的唯一问题是标签下似乎也添加了一条水平线。有没有办法只去掉标签上的线条?:

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

这使:

在此处输入图片描述

相关内容