ツリーのような構造に配置された多数のオブジェクトがあります (ツリーの各ノードには親と子があり、1 つのマスター ノードから始まり、多くの子ノードで終わります)。各オブジェクトには文字列の形式で独自の ID があり、多くの重複 ID がありますが、同じ親の下に重複はありません。例:
親A:
- 子A
- 子B
- 子D
親B:
- 子A
- 子C
- 子D
ツリーはまた、何層もの深さがあります。
次のように機能するオブジェクトを見つける方法が必要です (例は前のリストに基づいています)。
例 1:
- 文字列 {"childB"} を持つ ArrayList がアルゴリズムに渡されます
- 「childB」の ID を持つ重複ノードがないため、childB への参照が返されます。
例 2:
- 文字列 {"parentA", "childD"} を持つ ArrayList がアルゴリズムに渡されます
- 「childD」の ID と「parentA」の ID を持つ親を持つ重複ノードがないため、指定されたノードへの参照が返されます。
例 3:
- 文字列 {"childD"} を持つ ArrayList がアルゴリズムに渡されます
- ID が「childD」のノードが重複しているため、アルゴリズムは詳細情報 (親の名前) を要求します。
{"nodeA", "nodeD", "nodeX", "nodeD"} のように、多くのレベルの特異性が存在する可能性があることに注意してください。そのため、ある種のループまたは再帰的な方法が必要になる場合があります。
それで、何かアイデアはありますか?
更新: ツリーの各ノードを通過する深さ優先検索アルゴリズムを作成しましたが、非常にうまく機能します。このアルゴリズムは、すべてのノードを 1 つの ArrayList の形式で返します。ここで必要なのは、さまざまな程度の特異性に基づいてノードを選択する方法だけです。誰でもそれを手伝ってもらえますか?上記の 3 つの例は、必要なものを示しています。