GraphVizで木を書こう。
GraphVizというソフトでn分木を書く。
GraphVizについてはhttp://ja.wikipedia.org/wiki/Graphvizを参照。
インストールして、コマンドラインからdotを叩けるようになっている前提。
インストール方法についてはArchなら、pacman -S graphviz で。
それ以外はググってください。
Graphvizそのもののチュートリアルは
http://homepage3.nifty.com/kaku-chan/graphviz/
を参照するといいです。いいものです。
二分木を書く方法について。
ぶっちゃけ graphviz binarytreeでぐぐればでてくる。
http://www.linuxjournal.com/article/7275
こんな感じでやるとよりよい。
digraph Expression { node [shape = record]; node0 [ label ="<f0> | <f1> + | <f2> "]; node1 [ label ="<f0> | <f1> * | <f2> "]; node4 [ label ="<f0> | <f1> / | <f2> "]; node6 [ label ="{<f1> MAX | { <u1> | <u2> | <u3> }}"]; node2 [ label ="<f0> | <f1> - | <f2> "]; node5 [ label ="2"]; node9 [ label ="<f0> | <f1> / | <f2> "]; node8 [ label ="10"]; node10 [ label ="3"]; node7 [ label ="6"]; node3 [ label ="3"]; node11 [ label ="1"]; node12 [ label ="<f0> | <f1> * | <f2> "]; node13 [ label ="4"]; node14 [ label ="5"]; node15 [ label ="9"]; node0:f0 -> node1:f1; node0:f2 -> node2:f1; node1:f0 -> node4:f1; node1:f2 -> node6; node4:f0 -> node7; node4:f2 -> node3; node2:f0 -> node5; node2:f2 -> node9:f1; node9:f0 -> node8; node9:f2 -> node10; node6:u1 -> node11; node6:u2 -> node12; node12:f0 -> node13; node12:f2 -> node14; node6:u3 -> node15; }
ちなみに、別に、左とか右とかわけなくて良い木の場合はもっと楽。
(チュートリアル参照)
左右が欲しい場合にはこうせざるを得ないみたい。