指定侧面二叉树的深度

指定侧面二叉树的深度

我正在尝试绘制一棵树,我想用双向箭头指定其沿边的深度,箭头上写有深度。以下是我目前所得到的:

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

我正在尝试修改代码这里。我该如何修复这个问题?

(无关:有没有办法也可以让我有一个从根节点出来的箭头?)

答案1

希望这个建议的解决方案能很好地理解 OP。这里双箭头的定义方式如下\pgfarrowsdeclarecombine

在此处输入图片描述

代码

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

相关内容