Расположение узлов относительно узлов двоичного дерева

Расположение узлов относительно узлов двоичного дерева

Я обнаружил, что относительное позиционирование не работает, если я использую макет графика. Рассмотрим следующий пример:

\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 layoutв tikzpictureсреду. Если вы переместите его в опцию, которая передается в \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}

Выход такой:

выход дерева

Связанный контент