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