带权重的斐波那契树

带权重的斐波那契树

我正在尝试绘制斐波那契树,但为了让它们看起来更像真实的树,我按照以下条件反向绘制它们:

  • 第 n 个斐波那契树(Ft)应该有 F_n 个叶子(最终节点)
  • 第 n 个 Ft 的左分支为第 (n-1) 个 Ft,右分支为第 (n-2) 个 Ft。
  • 每个分支都有权重。如果向左走,则权重为 1;如果向右走,则权重为 2。
  • 图中用树枝的不同长度来表示重量的差异
  • 所有“短”分支应该具有相同的长度,并且所有“长”分支也应该具有相同的长度。

(见下面的代码和图片)

现在我正在手动进行操作,我确信这是最糟糕的方式,正如我的 MWE 所见

\documentclass{article}
\usepackage{xcolor}
\usepackage{tikz}
\begin{document}
\begin{minipage}{0.4\linewidth}
This is $Ft_3$:

\begin{tikzpicture}
\draw (0,0) -- (0,2);
\draw (0,2) -- +(-1,1);% short
\draw (0,2) -- +(1.4,1.4);% long
\end{tikzpicture}
\end{minipage}%
\hfil%
\begin{minipage}{0.4\linewidth}
This is $Ft_4$:

\begin{tikzpicture}
\draw (0,0) -- (0,2);
\draw[red] (0,2) -- +(-1,1);% <- left is shorter
\draw[blue] (0,2) -- +(1.4,1.4);% <- right is longer
\draw[red] (-1,3) -- +(-1,1);% <- left is shorter
\draw[blue] (-1,3) -- +(1.4,1.4);% <- right is longer
\end{tikzpicture}
\end{minipage}

This is $Ft_5$, the left part is (a modification of) {\color{red}$Ft_4$} and the right part is (a modification of) {\color{blue}$Ft_3$}:

\begin{tikzpicture}
\draw (0,0) -- (0,2); %root
\draw[red] (0,2) -- +(-1.5,1);% short
\draw[red] (-1.5,3) -- +(-0.5,1.5);% short
\draw[red] (-1.5,3) -- +(1,2.5);% long
\draw[red] (-2,4.5) -- +(-.8,.8);% short
\draw[red] (-2,4.5) -- +(.8,.8);% short
\draw[blue] (0,2) -- +(2,1.5);% long
\draw[blue] (2,3.5) -- +(-.8,.8);% short
\draw[blue] (2,3.5) -- +(.8,2);% long
\end{tikzpicture}
\end{document}

在此处输入图片描述

根部被放大,使其看起来“更好”。可以看出,图纸不能完全模拟,以避免树枝重叠

答案1

forest包装:

\documentclass{article}
\usepackage{forest}
\begin{document}
This is $Ft_3$:
\begin{center}
    \begin{forest}
for tree={
% nodes
    minimum width = 4em,
            delay = {where content={}{shape=coordinate}{},
% tree
    calign=fixed edge angles,
    calign angle=45,
    grow=north,
          },
      }
% tree body
[
    [
        [ ]
        [
            []
            []
        ]
    ]
]
    \end{forest}
\end{center}
\end{document}

在此处输入图片描述

注意,我没有添加权重(这很容易做到),因为我看不懂你的描述。如果你能提供一张包含权重的树形草图,我会添加它们。

附录: 问题中最后一棵树的 MWE:

在此处输入图片描述

\documentclass{article}
\usepackage{forest}

\begin{document}
This is $Ft_5$, the left part is (a modification of) \textcolor{red}{$Ft_4$} and the right part is (a modification of) \textcolor{blue}{$Ft_3$}:

\begin{center}
    \begin{forest}
for tree = {calign=fixed edge angles,
            if level = 1{calign angle=60}%
                        {calign angle=30},
          grow'=north,
          },
delay={where content={}{shape=coordinate}{}},
%
[
    [
        [, for tree={edge={red}}
            [
                [,tier=L3]
                [,tier=L3]
            ]
            [,tier=L3]
        ]
        [, for tree={edge={blue}}
            [,tier=L3]
            []
        ]
    ]
]
    \end{forest}
\end{center}
\end{document}

相关内容