ツリーを罫線で表現したい

簡単にツリー表現したい

BBSで罫線付きでツリー表現しようとした時にサンプルを探したところ
回帰している難しいものしかなかったので、簡単な方法を考えてみました。


ツリーデータ条件

  • 1階層の桁数を決める。今回は2桁として話を進めます。
    (したがって1階層には99個のデータまでです)
    (階層の深さに制限はありません)
  • 階層を深くする毎に上記の桁数を増やして行く。
  • 同じ階層内では、1から連番で付けていく。
  • ツリーデータ部分を文字データとして昇順に並べる。


データの追加と削除

追加
指定したツリーの1つしたの階層の数を調べ+1したのも。 data

削除
指定したツリーとその下の階層すべて削除。 data
指定したツリーの位置に削除済みの跡をのこす。


ツリーの表現

ツリーは昇順の後ろから求めていく。
ツリーの深さをパターンとして、罫線表示に1空白に0をセット
1つ前のデータのパターンが長ければ1桁取って最後の桁に1をセット data
1つ前のデータのパターンが短ければ data
  その前のパターンと
  残り階層の深さ分0をセット
  最後の桁に1をセット
パターンができたらそれを罫線に置きかえるだけです。


サンプルプログラム

サンプルプログラム用データ
追加 01020302 に追加する場合
cmp1:~$treeadd.pl 01020302
削除 010201 を削除する場合
cmp1:~$treedel.pl 010201
表示 ツリー表示
cmp1:~$treedsp.pl

注意:"cmp1:~$"は私のコンピュータの環境です。自分の環境に置き換えて考えてください。