私のDelphi 2007データベースアプリケーションでは、世代のリストがあります。各Generationにはプライシングテンプレートのリストがあり、それぞれが一連の値です。このアプリケーションでは、ユーザは広告申込情報を作成し、任意の世代の価格設定テンプレートを割り当てることができます。新しい世代は、既存の世代を複製することによって作成されます。したがって、ユーザーは最初の世代を作成し、それを複製して、新しい世代の必要な価格テンプレートの値を変更するだけで済みます。これらの世代(および価格設定テンプレート)はoriginids.ieによって接続され、Generation1のoriginidは0になり、generation2はgeneration1のidなどを指すoriginidを持ちます。また、既存のものから新しい世代を作成できます。世代3起源は世代1である。今、ユーザは、リフレッシュ機能を望んでおり、ユーザが価格設定テンプレートを世代から他の世代に「接続」されている場合に更新することができる。すなわち、それらが起点IDによって接続されている場合(必ずしも直接接続によるものではなく、起源生成の起点IDがターゲットのIDまたはターゲットの直接の子またはターゲットの子の子のいずれかを直接指している場合) 。等)。以下の説明をご覧ください。子孫のアンダーリストリストを検索する
この場合、ソースからターゲットのアルゴリズム(アルゴリズム/データ構造)を検索する最良の方法はありますか?
は
プラディープ
はGenerationName --id
、事前にあなたのすべてをありがとう - 100-- 0
ジェネレーション2 --101 --100( -
ジェネレーション1をOriginIDクローン化1)
世代3 - 102 - 100(1からクローニング)
世代4 - 103 - 102(3からクローニング)
世代5 - 104 - (第1世代→第3世代)または第4世代(世代1→世代3→世代4)または世代5(世代1→世代3→世代4→世代1→世代3→世代4)第2世代→第5世代)が接続されているためです。しかし第3世代から第5世代へのリンクは存在しないため、第3世代から第5世代までは許されません。