Festlegen der Tiefe eines Binärbaums auf der Seite

Festlegen der Tiefe eines Binärbaums auf der Seite

Ich versuche, einen Baum zu zeichnen und möchte seine Tiefe an der Seite mit einem Doppelpfeil angeben, auf dem die Tiefe steht. Das habe ich bisher:

\begin{tikzpicture}[<-, >=stealth', auto, semithick, level/.style={sibling distance=60mm/#1}]
%\node  {} child {
\node [circle,draw] (z){$\land$}
  child {node [circle,draw] (a) {$\lor$}
    child {node [circle,draw] (b) {$\land$}
      child {node {$\vdots$}
        child {node [rectangle,draw] (d) {$x_1$}}
        child {node [rectangle,draw] (e) {$x_2$}}
      } 
      child {node {$\vdots$}}
    }
    child {node [circle,draw] (g) {$\land$}
      child {node {$\vdots$}}
      child {node {$\vdots$}}
    }
  }
  child {node [circle,draw] (j) {$\lor$}
    child {node [circle,draw] (k) {$\land$}
      child {node {$\vdots$}}
      child {node {$\vdots$}}
    }
  child {node [circle,draw] (l) {$\land$}
    child {node {$\vdots$}}
    child {node (c){$\vdots$}
      child {node [rectangle,draw] (o) {$x_{n-1}$}}
      child {node [rectangle,draw] (p) {$x_n$}
        %child [grow=right] {node (q) {$=$} edge from parent[draw=none]
          %child [grow=right] {node (q) {$O_{k = \lg n}(n)$} edge from parent[draw=none]
            %child [grow=up] {node (r) {$\vdots$} edge from parent[draw=none]
             % child [grow=up] {node (s) {$O_2(n)$} edge from parent[draw=none]
               % child [grow=up] {node (t) {$O_1(n)$} edge from parent[draw=none]
                %  child [grow=up] {node (u) {$O_0(n)$} edge from parent[draw=none]}
               % }
             % }
            %}
           % child [grow=down] {node (v) {$O(n \cdot \lg n)$}edge from parent[draw=none]}
          %}
        %}
      }
     }
  }
};

\path (o) -- (e) node (x) [midway] {$\cdots$}
  child [grow=down] {
    node (y) {}%{$O\left(\displaystyle\sum_{i = 0}^k 2^i \cdot \frac{n}{2^i}\right)$}
    edge from parent[draw=none]
  };
  node (w) {};%[midway] {$O\left(\displaystyle\sum_{i = 0}^k n\right) = O(k \cdot n)$};
% \path (q) -- (v) node [midway] {=};
% \path (e) -- (x) node [midway] {+};
% \path (o) -- (x) node [midway] {+};
% \path (y) -- (w) node [midway] {$=$};
% \path (v) -- (w) node [midway] {$\Leftrightarrow$};
%\path (r) -- (c) node [midway] {$\cdots$};
\end{tikzpicture}
\end{preview}

Ich versuche den Code zu ändern vonHier. Wie kann ich dieses Problem beheben?

(Unabhängig davon: Gibt es eine Möglichkeit, auch aus dem Wurzelknoten einen Pfeil herauskommen zu lassen?)

Antwort1

Ich hoffe, diese vorgeschlagene Lösung versteht der OP gut. Hier wird ein Doppelpfeil definiert über\pgfarrowsdeclarecombine

Bildbeschreibung hier eingeben

Code

\documentclass[border=20pt]{standalone}%
\usepackage{tikz}
\usetikzlibrary{shapes,calc,positioning,arrows,}

\pgfarrowsdeclarecombine{twotriang}{twotriang}%    double headed arrow
{stealth'}{stealth'}{stealth'}{stealth'} 

\begin{document}

\begin{tikzpicture}[<-, >=stealth', auto, semithick,
 level/.style={sibling distance=60mm/#1}
]

%\node  {} child {
\node [circle,draw] (z){$\land$}
  child {node [circle,draw] (a) {$\lor$}
    child {node [circle,draw] (b) {$\land$}
      child {node {$\vdots$}
        child {node [rectangle,draw] (d) {$x_1$}}
        child {node [rectangle,draw] (e) {$x_2$}}
      } 
      child {node {$\vdots$}}
    }
    child {node [circle,draw] (g) {$\land$}
      child {node {$\vdots$}}
      child {node {$\vdots$}}
    }
  }
  child {node [circle,draw] (j) {$\lor$}
    child {node [circle,draw] (k) {$\land$}
      child {node {$\vdots$}}
      child {node {$\vdots$}}
    }
  child {node [circle,draw] (l) {$\land$}
    child {node {$\vdots$}}
    child {node (c){$\vdots$}
      child {node [rectangle,draw] (o) {$x_{n-1}$}}
      child {node [rectangle,draw] (p) {$x_n$}
      }
     }
  }
};

\path (o) -- (e) node (x) [midway] {$\cdots$}
  child [grow=down] {
    edge from parent[draw=none]
  };
\draw [twotriang-twotriang] ($(7cm,0)+(z.north)$)  coordinate(P)--node[midway]{\rotatebox[origin=c]{270}{depth}} (P|-p.south);
\draw [->] (z) -- ++(0,1cm);
\end{tikzpicture}

\end{document}

verwandte Informationen