2010-12-02 28 views
0

私は可能な限りすべてのサブジェクト、動詞、補完の組み合わせを保持するテーブルを持つデータベースを持っています。ツリーのデータ構造とデータ

この表は、他の表(サブジェクト表、動詞表、補足表)にマッピングされたId列のジャンクション表のように見えます。

私のプログラムでは、ツリー構造を使用して接合テーブルを表しているため、各ノードはIdプロパティ(subjectIdまたはverbId ...)を持つオブジェクトに過ぎません。

私が理解していないのは、Idがマッピングする実際のデータをどこに置くかです。

  1. 私が行う処理のみをロードすることで最初のケースではノード

をデータを作成し、データを各ノード

  • のプロパティを作成します。でも、私は私は2つのオプションを持っていました組み合わせ表を作成し、ツリーを作成します。そして、それに付随するデータが必要なときは、必要に応じてロードします。しかし、ツリー内のデータ位置を追跡するために、データにはそのツリーが属するノードを指すプロパティがあります(ツリー全体を検索する必要がないことは明らかです(たとえO(ログさらに、私は、ノード全体のノードを扱うのは、ノードの子に近づくための便利な方法であるからです。

    2番目のケースでは、実際のデータノードを使用する前にすべてのデータを一度に読み込む必要があります。また、ノードの親の兄弟が同じデータを使用している場合は、データのコピーを作成する必要があります。

    私がしようとしていることを達成するためのきれいな方法はありますか? 私は現在、私は質問が十分に明確であることを願っています

    ​​

    それとも

    public class Word : Node{} 
    

    を持っています。詳細が必要な場合はお知らせください。質問を更新します。 ありがとうございます。

  • 答えて

    0

    このツリーがバイナリ検索ツリーではないため、あなたが言及しているツリー内の検索はどの場合でもO(logn)になりません。それは、あなたがBFSかDFSのどちらかを使って検索する必要があると言うことができるように、あなたが言うことができる方向づけられていないグラフです。

    あなたの状況を正しくイメージングしていてUI上に表示している場合は、ウィンドウの左側のパネルにツリーがあり、右側のパネルにノードの詳細を表示します。

    これは、その後

    UIまたはあなたの状況であれば、私は、フェッチ、ユーザーがノードを選択すると、あなたはそのノードのIDを持つことになり、需要すなわち上の負荷、ツリー内のデータを格納していないと言うでしょうIDと表示されたデータ。

    このようにすれば、一度に必要としないすべてのデータの読み込みを回避できます。

    +0

    oops!確かにバイナリツリーではありません..! :-) – ak3nat0n

    関連する問題