如何连接 tikz 中树的任意节点

如何连接 tikz 中树的任意节点

我需要能够将树中的任意节点相互连接。我正在使用 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}

树

相关内容