Сохраните 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

Для узла используйте circle splitформу из shapes.multipartбиблиотеки TikZ:

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

который дает:

введите описание изображения здесь

Связанный контент