Zeigt die Anzahl der Blätter (Tiefe) auf jeder Ebene im Baum an.

Zeigt die Anzahl der Blätter (Tiefe) auf jeder Ebene im Baum an.

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}  

Baum

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 forestein 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

Forestzählt bereits Ebenen, daher ist eine separate Funktion hierfür überflüssig. Darüber hinaus pgfmathbeschleunigt 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}

Baum mit beschrifteten Ebenen

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 calcTikz-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:

Ausgabe

verwandte Informationen