ツリー (無制限の数のノードを持つことができる通常のツリーですが、クロスオーバーはありません。つまり、2 つの親ノードが同じ子ノードを指すことはありません) を使用するコードを書いています。とにかく、2つのこと:
1) ツリー内のサブツリーを見つけるためのよく知られたアルゴリズムはありますか?
2) このアルゴリズムを既に実装している Java ライブラリ (またはそのライブラリ) はありますか? 何もない場合でも、誰でも優れた汎用 Java ツリー ライブラリを推奨できますか?
これらのツリーは、検索機能のためではなく、ツリー形式でデータを保持するために使用したいと考えています。
少し拡張するには、特定のイベントが発生したときに何が起こるかの履歴を保持するために、ゲームの一部としてツリーを使用しています。たとえば、A は、別の 2 つの A をヒットできる 2 つの A をヒットできる B をヒットできます。
それは次のようになります。
A
|
B
/
A
/ \
A A
/ \
A A
もちろん、A と B だけではありません。私がやりたいことは (達成システムのために)、いつ A が 2 つの A にヒットしたかを知ることができるようにすることです:
A
/ \
A A
最初のツリーにそのサブツリーが含まれているかどうかを簡単に知りたいです。そして、そうする必要がなければ、そのためのすべてのコードを書く必要はありません:)