2016-05-30 3 views
0

私は先祖と後継者の両方を持つツリーの実装を見つけようとしています。たとえば、私たちは を持つ家族ツリー - 選択した連絡先(ルート) - 彼/彼女の両親、祖父母など - 次のように彼/彼女の子供、孫など は、理想的にはなります先祖と後継者を持つJavaツリー

GF1 GM1 GF2 GM2 
    F   M 
     Root 
    S   D 
GS1 GD1 GS2 

ここ GF - グランド父
GM - グランドマザー
F - 父
M - 母
S - ソン
D - 娘
G S - Grand Son
GD - Grand Daughter

私はいくつかのツリー実装を見つけましたが、上記のような階層を描くことはできません。

ご協力いただければ幸いです。

ありがとうございました。

+0

ちょうど質問:あなたの問題は、ツリーを描くことができないということですか? (私はあなたが適切なモデルを持っていて、図面が不足している場合は、質問を書き直してください)...または、あなたのデータを表すことができる適切なモデルを探していますか?(後で描画するのは別の質問で最も良いです) –

+0

DBからデータを取得するモデルがありますが、ツリーを正しく描画する方法が問題です。たとえば、ツリー表示の優れた実装があります:** abego **しかし、親と子と一緒にツリーを描画する機能がありません。 –

答えて

0

バイナリツリーは、すべてのノードに最大2人の子供(男性と女性)があると仮定して、うまくいくはずです。

また、ツリーのアブストラクトNodeを設計するときは、左と右の親(つまり、母と父)へのポインタを加えて、左右の子へのポインタに追加することもできます。

class Node { 
    Node mother; 
    Node father; 
    Node son; 
    Node daughter; 
} 

ツリーにNodeを追加するとき、あなたは新しい後継者/前任者を追加したため、現在のノード内の参照を更新する必要がありますだけでなく、あなたは現在のノードの参照に後継者を追加する必要があることを注意/前任者も同様です。

これにより、選択した(ルート)ノードから上下にナビゲートすることができます。

+0

私は、Nodeが(** one ** sonと** one ** daughterだけでなく)異なる量の子を持つことを可能にする 'List childList'を持っていることをお勧めしますか?それだけでなく、それは非常に適切な解決策になります! –

+0

残念ながら、いくつかの息子といくつかのdaugthersがあるかもしれません。そのような場合、私たちはn-aryツリーを必要とします。これは実際には子供または親だけを表示しようとすると機能します。 問題は**両方の親と子を同時に表示することです。 –

+0

**ツリー**ではなく、**バイナリツリー**が必要ですか? –

0

あなたは木が単にシンプルなテーブルの実装であることがわかっている場合だけTable

どのような場合には、カスタムの表を作成して飾ることができますされているの一種が木で、カスタムウィジェットを必要とする

table representing a tree

すべての子/親が深さに応じてインデントされているので、親はparent.parentは同じでは子供たちのために適用され、深さ2であり、深さ1です。

ツリーシンボルを描画する必要があるエントリがある場合はいつでも、列がノードの深さと等しい場合は+、深さが行より深い場合は|となります。

不都合なことに、私はそうしていないことを知っているので、あなた自身でそれを行う必要があります。テーブルやテーブルモデルの実装に問題がある場合は、別の質問をしてください!

+0

には 'JTable'と' JTableModel'があります。 –

関連する問題