相对于二叉树布局的节点定位节点

相对于二叉树布局的节点定位节点

我发现,如果我使用图形布局,相对定位就不起作用。请考虑以下示例:

\documentclass{article}
\usepackage{tikz}

\usetikzlibrary{
    graphdrawing
  , graphs
  , positioning
  }
\usegdlibrary{trees}

\begin{document}
    \begin{tikzpicture}[binary tree layout]
        \graph {
            n0 -> {n1, n2};
        };
        \node [left = of n0] {left of n0};
    \end{tikzpicture}
\end{document}

它产生了以下意外的输出。

在此处输入图片描述

几乎所有与放置相关的操作都不起作用。您可以说at (n0.center),最后一个节点最终会位于同一位置。我如何相对于图中的节点放置节点?

答案1

您正在将其传递binary tree layouttikzpicture环境。如果您将其移动到传递给 的选项\graph,如下所示:\graph[binary tree layout],您的代码就可以正常工作。

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}

\usetikzlibrary{
    graphdrawing
  , graphs
  , positioning
  }
\usegdlibrary{trees}

\begin{document}
    \begin{tikzpicture}%[binary tree layout]
        \graph[binary tree layout] {
            n0 -> {n1, n2};
        };
        \node[left= of n0] {left of n0};
    \end{tikzpicture}
\end{document} 

答案2

您可以使用树库来实现这一点。您可以通过为节点指定节点名称来定位节点。

代码如下

\documentclass{article} 
\usepackage{tikz}
\usetikzlibrary{trees}
\begin{document}
    \begin{tikzpicture}[level distance=1.5cm,
      level 1/.style={sibling distance=3cm}]
      \node (n0) {n0}
        child {node (n1) {n1}}
        child {node (n2) {n2}
        };
    
        \node [left of=n0, xshift=-1cm] {left of n0};
    \end{tikzpicture}
\end{document}

输出如下

树输出

相关内容