Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'm trying to draw a tree, and I want to specify its depth along the side with a double headed arrow with the depth written on the arrow. Here is what I have so far:

\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}

I'm trying to modify the code from here. How can I fix this problem?

(Unrelated: Is there a way I can have an arrow coming out of the root node as well?)

share|improve this question

1 Answer 1

up vote 5 down vote accepted

Hope this proposed solution understands the OP well. Here an double head arrow is defined via \pgfarrowsdeclarecombine

enter image description here

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}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.