TikZ 中红黑树中的重叠节点

TikZ 中红黑树中的重叠节点

我从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}

在此处输入图片描述

相关内容