FC2ブログ

天地有情

[LaTeX] binarytree --- 二分木を描く

§1 はじめに

二分木(binary tree; 二進木、バイナリツリー)は,データ構造の1つです.根付き木構造の中で,
あるノード(節点 node)がもつ子の数が高々2であるものをいいます.
典型的には2つの子はそれぞれ「左」「右」と呼ばれます.たとえば、二分探索や二分ヒープを実装するために使われます.
 
binarytreeパッケージはTikZを使って二分木を描くための簡単だが柔軟なインターフェースを提供します.
これは,<l/r 移動>:<label>:<color>:<anchor>!という形式の「パス指定」を使用します.
パス指定とさまざまなオプションの設定によって,ツリーの各エッジのスタイルが決まります.

1.1 インストール

必要に応じて,CTAN( https://ctan.org/pkg/binarytree )から
ダウンロードしてください.

TeXLive/W32TeX には標準でインストールされています.

1.2 マニュアル

コマンドラインから texdoc binarytree を実行するか,
上記に同梱の binarytree.pdf をお読み下さい.

§2 使い方

2.1プリアンブルに
  \usepackage {binarytree}
  を記述します.

2.2 コマンド

\BinaryTree[<ローカルオプション>] {<パス指定>} {<深さ>}

\BinaryTreeは「パス指定」と最大ツリー「深さ」を表す数を受け入れます.


  ● <local options>は,オプションを設定する <key = value> の組をカンマで区切ったリストです.

  ● <パス指定>は
    <l/r 移動>:<ラベル>:<色>:<アンカー>!<l/r 移動>:<ラベル>:<色>:<アンカー>!    ....の形式です.
    複数のそのようなパスを,コンマで区切って指定できます.

  ● <l/r 移動>は,現在のノードの対応する(左または右の)子を訪問し,<色>でエッジを描画します.

  ● <label>は,サブパスの最初またはすべての子の、指定されたアンカーに配置されます。

    感嘆符の後のパスは最後の子から続きますが、コンマの後のパスは再びルートから始まります。

  ● <深さ>は,ツリーが描画される最大の深さです.この深さで止まります.
    この深さを超えて広がる移動はすべてエラーなしで無視されます.


§3 サンプル

簡単な例

オプションなしで(大きさ 11, 深さ 3)の例です.

binarytree.png


■■■■■■■■■■■■■■■■■■
\documentclass{standalone}
\usepackage{binarytree}
\begin{document}
\btreeset{math labels}
\begin{tikzpicture}
\BinaryTree{
:root!l:x!l:y!
l:\alpha,ll!r:\beta,lr!r:\gamma,
r:a!r:b!r:r,rr!l:s,rl!l:t}{3}
\end{tikzpicture}
\end{document}
■■■■■■■■■■■■■■■■■■

コンパイルは, pdflatex あるいは lualatex で実行します.


(EOF)
スポンサーサイト



  1. 2019/01/13(日) 09:07:42|
  2. LaTeX Tools