![无法在二叉树布局中命名子节点](https://linux22.com/image/446391/%E6%97%A0%E6%B3%95%E5%9C%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E5%B8%83%E5%B1%80%E4%B8%AD%E5%91%BD%E5%90%8D%E5%AD%90%E8%8A%82%E7%82%B9.png)
我正在尝试绘制一个自定义二叉树。我通读了手册。据我所知,可以命名子节点。但是,以下代码是意料之外的。在同一个节点上绘制了两个圆圈。如何修复我的代码?非常感谢!
% !TEX program = lualatex
\documentclass[12pt,A4]{standalone}
\usepackage{tikz}
\usetikzlibrary {graphs,graphdrawing}
\usegdlibrary {trees, layered}
\begin{document}
\begin{tikzpicture} [binary tree layout, ]
\node[name=nodeA]{A}
child {
node[ fill=green, name=nodeB]{B}
child [missing]
child { node {C}
child { node {D} }
child [missing]
}
};
\draw [red] (nodeA) circle [radius=3mm];
\draw [green] (nodeB) circle [radius=8mm];
\end{tikzpictur}
\end{document}
答案1
欢迎来到 TeX.SE!
您的问题可以通过使用纯简单解决tikz
:
\documentclass[12pt, margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary {graphs,graphdrawing}
\usegdlibrary {trees, layered}
\begin{document}
\begin{tikzpicture}
\node (A) {A}
child {node (B) [fill=green] {B}
child [missing]
child { node {C}
child { node {D} }
child [missing]
}
}
child [missing]
;
\draw [red] (A) circle [radius=3mm];
\draw [green] (B) circle [radius=8mm];
\end{tikzpicture}
\end{document}
附录:不清楚你的问题是什么。从你的回答(实际上是一个新问题)可以看出,你有时在某个树层中有许多节点。在这种情况下,它们不会重叠,你需要定义sibling distance
适当的大小。例如:
\documentclass[12pt, margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary {graphs,graphdrawing}
\usegdlibrary {trees, layered}
\begin{document}
\begin{tikzpicture}[
sibling distance = 22mm
]
\node (A) {A}
child {node (B) [fill=green] {B}
child [missing]
child { node {C}
child { node {D} }
child [missing]
}
}
child {node {something}}
;
\draw [red] (A) circle [radius=3mm];
\draw [green] (B) circle [radius=8mm];
\end{tikzpicture}
\end{document}
但在这种情况下,如果想在这个新节点上画圆圈,那么圆圈将与邻域中的节点重叠。这意味着你用圆圈强调某些节点的方式并不理想。
由于您问题的背景不明,因此很难帮助您。对于绘制树,使用包似乎是您的forest
最佳选择。