如何在 tikz-qtree 中绘制空节点?

如何在 tikz-qtree 中绘制空节点?

我是新手tikz-qtree,我想在 LaTeX 中重现此图:

在此处输入图片描述

到目前为止,我已经设法拼凑了这段代码,但结果有点滑稽,因为空节点(没有文本的节点)看起来比有文本的节点小。其次,我还没有完全设法将文本放在节点上方或节点/边缘的对面,如图所示。

如何让所有圆的半径都相同,而不管它们是空的还是填充的?

\begin{tikzpicture}[every tree node/.style={draw,circle}]
\Tree[.{Root}
   [.4 11 {} ]
   [.5 6  {} ]
   ]
\end{tikzpicture}

我认为要做到这一点,我可能需要使用固定半径指定一个新节点,\newcommand对吗?但是,我的尝试没有成功。

答案1

您可以指定节点的最小大小,并固定兄弟节点和级别距离。为了绘制与级别匹配的注释,我们创建了另一棵树,该树的分支为空,但级别距离相同。为了使样式参数保持独立,每棵树都包装在自己的{scope}环境中。

\documentclass{article}
\usepackage{tikz-qtree}
\usetikzlibrary{positioning}
\definecolor{blech}{rgb}{.78,.78.,.62}
\begin{document}
\begin{tikzpicture}
\begin{scope}
  \tikzset{edge from parent/.append style={draw=none}, 
  every tree node/.style={draw=none},level distance=2cm
  }
  \Tree [[.{Level 1} [.{Level 2} ]]]
\end{scope}
  \begin{scope}[xshift=2in]
\tikzset{every tree node/.style={draw,circle, minimum size=2em,fill=blech},
    level distance=2cm,sibling distance=1cm}
    \Tree[.\node (Root) {};
       [.4 11 {} ]
       [.5 6  {} ]
       ]
   \node [above=.25cm of Root] {Root};
\end{scope}
\end{tikzpicture}
\end{document}

代码输出

答案2

推荐使用 PSTricks 的解决方案。

\documentclass[preview,border=12pt,12pt]{standalone}
\usepackage{pst-tree}
\definecolor{mycolor}{RGB}{199 199 158}% my own color 

\psset{radius=10pt,fillstyle=solid,fillcolor=mycolor}

\begin{document}
\psTree[thislevelsep=0]{\Tn}
    \psTree{\Tn}
        \psTree[edge=none]{\Tr{Level 1}}
                \Tr{Level 2}
        \endpsTree
    \endpsTree
    \psTree{\TCircle{}~[tnpos=a]{Root}}
        \psTree{\TCircle{4}}
                \TCircle{11}
                \TCircle{}
        \endpsTree
        \psTree{\TCircle{5}}
                \TCircle{6}
                \TCircle{}
        \endpsTree
    \endpsTree
\endpsTree
\end{document}

在此处输入图片描述

相关内容