
我有以下二元樹:
\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}
這使: