2 分木を ascii art で表示する方法は?
2 分木を ascii art で表示するには、どのようにプログラムを組めばよいですか?
(ruby での回答が望みですが、他の言語でも可です)
出力イメージ:(あくまでイメージ。これと異なっていても構いません。)
__9__
/ \
4 15
/\ / \
2 6 12 17
2 分木の操作プログラム例が以下にあります。このコード中での tree 表示結果を上のようなものにしたいのです。
2分木へのデータの追加について 中の回答例
2分木のデータ追加、サーチ、削除について 中の回答例
追記: (2015-01-21)
次のような偏った木の時に, なるべく 表示の横幅を最小にするには ?
( 頂点の 10 より左に 15 のような node の水平位置が左になるように詰められるケースがあり得るハズ)
10
/ \
9 19
/ /
8 18
/ /
7 17
/ /
6 16
/ /
5 15
追記: (2015-01-18)
次のページを見つけた。詳細を検討中 ...
・ Print a Binary Tree
・ How to print binary tree diagram?表示向きは縦、ノードを結ぶ線の表示は必須条件とします。
ノード値の桁数は最大2桁までに制限しても構いません。(4桁程度まで対応できるのが望ましいけど)
私自身としては、tree の深さ(たとえば 4)をあたえたら以下のような出力をえられる方法が作成できれば、それを元にして x の部分を値に置換したり、node が無い部分を空白化するという案も検討中です...
x
/----- -----\
x x
/-- --\ /-- --\
x x x x
/ \ / \ / \ / \
x x x x x x x x