森林中的二项式队列?

森林中的二项式队列?

我希望得到一些帮助,用森林包绘制二项式队列。我能找到的只是对二项式树的引用,但我希望复制这个:

在此处输入图片描述

我尝试使用幻影来创造空间但它并没有按照我想要的方式工作:

\begin{forest}
  for tree={circle,l=14mm,s sep=10mm,draw}
  [23
    [,phantom]
    [51]
    [24
      [,phantom]
      [65]
    ]
  ]
 \end{forest}

在此处输入图片描述

任何帮助我都非常感谢!

答案1

一个简单粗暴的解决方案:

\documentclass[margin=3mm]{standalone}
\usepackage{forest}

\begin{document}
    \begin{forest}
for tree={circle,l=14mm,s sep=10mm,draw}
[23
    [,phantom]
    [,phantom]
    [51]
    [24
        [,phantom]
        [65]
    ]
]
    \end{forest}
\end{document}

在此处输入图片描述

更“先进”的解决方案

\documentclass[margin=3mm]{standalone}
\usepackage{forest}

\begin{document}
    \begin{forest}
for tree={circle, l=14mm, s sep=7mm, draw, 
          calign=first} % <---
[23
    [,phantom]
    [51]
    [24
        [,phantom]
        [65]
    ]
]
    \end{forest}
\end{document}

结果与以前类似。

答案2

可以phantoms使用 来完全避免这种情况calign=fixed edge angles,如第 41 页顶部的手册中所述。我会为此定义一种风格。

\documentclass{article}
\usepackage{forest}
\forestset{binomial queue/.style={calign=fixed edge angles,calign primary
angle=30,calign secondary angle=60,
  for tree={if n children={1}{grow=-60}{calign=fixed edge
  angles,calign primary angle=30,calign secondary angle=60},
  circle,draw,text width=width("23"),align=center}}}
\begin{document}
\begin{forest}
  binomial queue
  [23
    [51]
    [24
      [65]
    ]
  ]
\end{forest}

\begin{forest}
  binomial queue,
  for tree={s sep+=1em}
  [12
    [21]
    [24
      [65]
    ]
    [14
      [26]
      [16
        [18]
      ]
    ]
  ]
\end{forest}
\end{document}

在此处输入图片描述

编辑where按照if@cfr 的建议替换,谢谢!

相关内容