在 LaTeX 中绘制(朝上的、可能未标记的)二叉树和森林?

在 LaTeX 中绘制(朝上的、可能未标记的)二叉树和森林?

我正在尝试弄清楚如何在 Latex 中绘制可能未修饰的二叉树(森林)。到目前为止,我已经查看了“forest”包,但我无法使用它来满足我的需要。我希望绘制如下所示的二叉树:

一个根和三片叶子的树

我还希望能够绘制二叉树森林:

有 3 棵树的森林

最后,我希望能够通过垂直连接将一棵有 n 片叶子的树组成一片有 n 棵树的森林:

森林与树木的组成

我知道最后一个选项可能不作为内置的东西存在于包中,但我想以防万一我还是会问一下。

谢谢!

编辑:以防万一将来有人遇到这种情况——在更新我的 MacTex 发行版并使用 XeLaTeX 进行编译后,接受的解决方案对我来说没有任何错误。

答案1

\bintree这是一个使用包的语法将树作为参数的宏forest

在此处输入图片描述

由以下代码生成:

\[
t=\bintree{[[[[][]][]]]} \hspace{2cm} 
f=\bintree{[[[[]]]]}\qquad\bintree{[[[[][]]]]}\qquad\bintree{[[[][[][]]]]}
\]

该宏使用在 a 中定义的样式\forestset。代码如下:

\documentclass{article}

\usepackage{forest}

\forestset{bintree/.style={for tree={calign=fixed edge angles, grow'=north, edge=very thick, if n children=0{tier=x}{}},
     delay={where content={}{shape=coordinate, for current and siblings={anchor=north}}{}}}}

\newcommand{\bintree}[1]{\vcenter{\hbox{\scalebox{.5}{\tiny\begin{forest}bintree #1 \end{forest}}}}}

\begin{document}

\[
t=\bintree{[[[[][]][]]]} \hspace{2cm} 
f=\bintree{[[[[]]]]}\qquad\bintree{[[[[][]]]]}\qquad\bintree{[[[][[][]]]]}
\]

\end{document}

组合不是自动的,但可以通过将树复制并粘贴到叶子中来完成。以下是t上述代码:

\bintree{[[[[<paste tree here>][<paste tree here>]][<paste tree here>]]]}

f并粘贴以下组件:

The composition $f\circ t=\bintree{[[[[[[[[]]]]][[[[[][]]]]]][[[[][[][]]]]]]]}$

在此处输入图片描述

相关内容