在中間以水平線分隔的節點中儲存 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}

這使:

在此輸入影像描述

相關內容