我从TikZ 示例页面并根据我自己的需要进行了调整,但是我在树的底层得到了重叠的节点:
\documentclass{article}
\usepackage{tikz}
\usepackage{subfigure}
\begin{document}
\tikzset{
treenode/.style = {align=center, circle, draw=black, inner sep=0pt, text centered, font=\sffamily, thick, text width=2em},
w/.style = {treenode, black},
b/.style = {treenode, white, fill=black},
level/.style = {sibling distance=0.45\textwidth/#1}
}
\begin{figure}
\begin{center}
\begin{subfigure}{0.45\textwidth}
\begin{tikzpicture}
\node [w] {15-8}
child {node [b] {4-9}
child {node [w] {4-2}}
child {node [w] {2-1}}
child {node [w] {3-1}}
}
child {node [b] {4-6}
child {node [w] {3-1}}
child {node [w] {3-3}}
};
\end{tikzpicture}
\caption{1}
\end{subfigure}
\begin{subfigure}{0.45\textwidth}
\caption{2}
\end{subfigure}
\vskip\baselineskip
\begin{subfigure}{0.45\textwidth}
\caption{3}
\end{subfigure}
\begin{subfigure}{0.45\textwidth}
\caption{4}
\end{subfigure}
\end{center}
\end{figure}
\end{document}
导致
我试过摆弄该sibling distance
参数但无法让它正确地分隔节点。
我看过其他一些答案,但他们使用不同的包来绘制树。有没有一种好的方法可以在 tikz 中绘制这样的树而不重叠?可能使用所有可用的0.45\textwidth
空间来分隔叶节点?
答案1
很forest
简单(如上所述)伊格纳西在他的评论中):
\documentclass[border=3mm]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree = {circle, draw, minimum size=4ex, inner sep=2pt,
where level = 1{fill=black, text=white}{},
grow = south
}
[15-8
[4-9
[4-2]
[2-1]
[3-1]
]
[4-6
[3-1]
[3-3]
]
]
\end{forest}
\end{document}