Ich zeichne einen Baum wie unten dargestellt. Der MWE dafür ist unten:
\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}
Ich möchte die Anzahl der Knoten auf jeder Ebene des Baums schreiben. Zum Beispiel nebenN, ich möchte 1 schreiben. In der nächsten Ebene 2 und so weiter. Da ich forest
ein Paket verwende,
[n\hspace{1cm}1]
scheint nicht zu helfen. Irgendwelche einfachen Ideen, wie man das machen kann?
Bearbeitung 1:
ich fandeine verwandte Fragewas bei mir nicht funktioniert.
Antwort1
Forest
zählt bereits Ebenen, daher ist eine separate Funktion hierfür überflüssig. Darüber hinaus pgfmath
beschleunigt die Minimierung der Verwendung von die Kompilierung. (Kein Problem, wenn dies Ihr einziger Baum ist und er so einfach ist, aber eher ein Problem, wenn Sie viele oder komplexe Bäume haben.)
\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}
Antwort2
Eine einfache und robuste Methode wäre, einen der Knoten in jeder Ebene zu benennen und die Y-Koordinate dieses Knotens zu verwenden (unter Verwendung der calc
Tikz-Bibliothek), um die richtige Höhe für jedes Etikett zu erhalten. Die Anzahl der Knoten kann programmgesteuert gezählt werden – in Ihrem Fall lautet die Formel eindeutig 2^n
(verwenden Sie 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}
Ausgabe: