帮助使用森林进行因子树

帮助使用森林进行因子树

我开始使用包森林来创建一个因子树(我对它很陌生。刚刚看了另一篇文章来开始)。

但我无法扩展它。不知道该怎么做。

当前代码:

\documentclass{article}
\usepackage{forest}

\begin{document}
\begin{forest}
  [16
    [2
      %[#]%
      %[#]%
    ]
    [8
      [4]
      [2]
    ]
  ]
\end{forest}
\end{document}

电流输出:

在此处输入图片描述

我想要完成的(展开 4 并在 2 周围画一个圆圈:

在此处输入图片描述

任何帮助,将不胜感激

答案1

要添加的其余因素,4只需将两个[2]孩子添加到[4]

[4 [2][2]]

或使用格式

[4
  [2]
  [2]
]

那些是完全一样的。

对于叶子节点(没有子节点的节点),我们可以使用forest内置检查

if n children = {0}{<true>}{<false>}

检查当前节点是否有0子节点,如果有,则应用选项<true>,否则<false>

由于您希望自动检查所有节点,我们将其放入for tree


由于您可能希望将其用于多棵树,我们将其打包在一个leaves as circles键中,以便您只需将此选项作为环境选项添加即可forest。(这些选项是不是[和之间],与 LaTeX 中一样。)

我对这些节点进行了一些调整,我认为在这种情况下inner sep默认值对于 s 来说有点太大了。circle


添加到这些无子叶的选项只是普通的 TikZ 节点选项。这现在提供了一种自动化方法。

forest但是,对于每个子节点,您可以在节点内容之后添加 TikZ(或键) ,

[2, red]

将在树中的当前位置添加一个节点2,其内容将为红色,就像 一样\node [red] {2};

代码

\documentclass{article}
\usepackage{forest}
\forestset{
  leaves as circles/.style={
    for tree={
      if n children = {0}{circle, draw, inner sep=+.15em}{}
    }
  }
}
\begin{document}
\begin{forest} leaves as circles
  [16
    [2]
    [8
      [4
        [2]
        [2]
      ]
      [2]
    ]
  ]
\end{forest}
\end{document}

输出

在此处输入图片描述

相关内容