1

すでにクラスター化して (葉) ツリーに保存したオブジェクトからデンドログラムを描画したいと考えています。Java の私の Cluster オブジェクトは、これらの図で表すことができます。各葉にはオブジェクトが含まれ、各ノードにはその子間の距離が含まれます。

http://i.stack.imgur.com/6nktv.png

今、樹状図を段階的に描きたいので、最初にオブジェクト1と2を描画し、次にオブジェクト3をそれらに追加する必要があります。それから5と6を一緒に…など、すべてがつながる最後まで。これを簡単に描画するためのすべてのツールが既にありますが、ツリーを正しく歩く効率的な方法を見つけることができません。

これは、これまでの例の結果である必要があります (編集: 間違いがあります。5 から 6 までの距離は、3 から 1&2 までの距離よりも小さく見えますが、私の例ではそうではありません!): http://i.stack.imgur.com/gecAF.png

この再帰アルゴリズムに関するヒントはありますか?

4

1 に答える 1

0

最初に深さをレンダリングしています - レイアウトを正しく機能させるには、深さを追跡する必要があることに気付くかもしれません - また、非終端記号も描画する必要があることに注意してください (「*」は 3 の前に描画されます)。

基本的

draw(node)
{
   if(hasleft) draw(left)
   if(hasright) draw(right)
   drawme()
}

これは二分木を想定していますが、それがあなたが描いたものです - そしてこれはレイアウトの問題のためにもっと複雑になるでしょう - あなたは本当に上から下に幅を最初に描くことを考えたいと思っています。それはレイアウトをはるかに少なくします痛い

于 2012-06-25T18:56:40.783 に答える