Я рисую дерево, как показано ниже. MWE для него ниже:
\documentclass[]{article}
\usepackage{forest}
\title{}
\author{}
\begin{document}
\date{}
\begin{forest}
[n
[n-1
[n-2[$\vdots$]][n-2[$\vdots$]]]
[n-1
[n-2[$\vdots$]][n-2[$\vdots$]]]]
\end{forest}
\end{document}
Я хочу записать количество узлов на каждом уровне дерева. Например, смежных сн, я хочу написать 1. На следующем уровне 2 и т. д. Поскольку я использую forest
пакет,
[n\hspace{1cm}1]
похоже, не помогает. Есть какие-нибудь простые идеи, как это сделать?
Редактировать 1:
я нашелсвязанный вопросчто мне не подходит.
решение1
Forest
уже подсчитывает уровни, поэтому отдельная функция для этого излишняя. Кроме того, минимизация использования pgfmath
ускорит компиляцию. (Это не проблема, если это ваше единственное дерево и оно такое простое, но это станет проблемой, если у вас много или сложные деревья.)
\documentclass[tikz,border=10pt]{standalone}
\usepackage[]{forest}
\begin{document}
\begin{forest}
for tree=math content,
before drawing tree={
tikz+={\coordinate (a) at (current bounding box.east);},
for nodewalk={fake=r, L, ancestors}{
if={>O+t_+t={content}{\vdots}}{
tikz+={\node [anchor=base west] at (.base -| a) {$2^k$};}
}{%
tikz+/.process={Ow+Pw}{level}{int(2^#1)}{\node [anchor=base west] at (.base -| a) {#1};}
}
}
}
[n
[n-1
[n-2
[\vdots]
]
[n-2
[\vdots]
]
]
[n-1
[n-2
[\vdots]
]
[n-2
[\vdots]
]
]
]
\end{forest}
\end{document}
решение2
Простым надежным способом было бы назвать один из узлов на каждом уровне и использовать координату y этого узла (используя tikzlibrary calc
), чтобы получить правильную высоту для каждой метки. Подсчет количества узлов можно выполнить программно - в вашем случае формула ясна 2^n
(используйте pgfs pow
):
\documentclass[]{article}
\usepackage{forest}
\usetikzlibrary{calc} % let
\newcommand\leftsep{3} % How far left of center line of forest labels appear (cm)
\newcounter{levelcount} % Stores current level in tree
\newcommand\countnodes[1]{% Command to add label at height of node #1
\draw let \p{L} = (#1) in (-\leftsep,\y{L}) node {\pgfmathparse{int(pow(2,\value{levelcount}))}\pgfmathresult};
\stepcounter{levelcount} % Step counter for next level
}
\begin{document}
\begin{forest}
[n, name=root % Name root
[n-1, name=level1 % Name a node in level 1
[n-2, name=level2 [$\vdots$]][n-2[$\vdots$]]] % Name a node in level 2
[n-1
[n-2[$\vdots$]][n-2[$\vdots$]]]]
{% Node counting - these must be in order
\countnodes{root}
\countnodes{level1}
\countnodes{level2}
}
\end{forest}
\end{document}
Выход: