我需要能够将树中的任意节点相互连接。我正在使用 tikz 中的树包来创建我的树。但是我不知道如何通过 draw 或 path 命令连接到节点。这是一个最小示例。假设我想将节点 F 连接到节点 D,任何建议都将不胜感激。
阿蒂梅斯
\documentclass[10pt]{book}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usetikzlibrary{trees,positioning,arrows}
\begin{document}
\begin{tikzpicture}[scale=0.8,font=\small, edge from parent fork down,
every node/.style={fill=blue!10},
edge from parent/.style={red,thick,draw},
level 1/.style={sibling distance=8cm},
level 2/.style={sibling distance=4.5cm}]
\node {A}
child {node {B}
child {node {C} }
child {node {D} child{node{E}}}}
child {node {F}
child {node {G}}
};
\end{tikzpicture}
\end{document}
答案1
我发现给节点添加标签可以实现这一点。请注意相应节点语法中的(D)
和。(F)
\documentclass[10pt]{book}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usetikzlibrary{trees,positioning,arrows}
\begin{document}
\begin{tikzpicture}[scale=0.8,font=\small, edge from parent fork down,
every node/.style={fill=blue!10},
edge from parent/.style={red,thick,draw},
level 1/.style={sibling distance=8cm},
level 2/.style={sibling distance=4.5cm}]
\node {A}
child {node {B}
child {node {C} }
child {node (D) {D} child{node{E}}}}
child {node (F) {F}
child {node {G}}
};
\draw (F) -- (D);
\end{tikzpicture}
\end{document}
(虽然我不排除树木有隐式标签系统与矩阵相同。
答案2
对于 (根) 节点,第 1 级的子节点编号 n 可以通过 访问(root-n)
,第 2 级的子节点编号 m 的子节点编号 n 可以通过(root-m-n)
etc centera 访问。下面是使用隐式命名方法的修改示例:
\documentclass[10pt]{book}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usetikzlibrary{trees,positioning,arrows}
\begin{document}
\begin{tikzpicture}[scale=0.8,font=\small, edge from parent fork down,
every node/.style={fill=blue!10},
edge from parent/.style={red,thick,draw},
level 1/.style={sibling distance=8cm},
level 2/.style={sibling distance=4.5cm}]
\node (root) {A}
child {node {B}
child {node {C} }
child {node {D}
child {node{E}}}}
child {node {F}
child {node {G}}
};
\draw[->, dashed] (root-2) -- (root-1-2);
\end{tikzpicture}
\end{document}