ArrayList からオブジェクトの基本的なツリーを構築するにはどうすればよいですか (この場合、以下の Person クラスの Person オブジェクト)。概念的には、ツリーがどのように機能するか、どのようにオブジェクトを配列リストに追加するかを理解していますが、ツリーの構築の側面とノードをリンクすることに多くの問題を抱えており、圧倒されているようです。また、私が行った調査から、再帰アルゴリズムがこれに取り組むための最良の方法であるようです。本当ですか?私はJavaの初心者なので、コードだけでなく詳細な回答をお願いします。
これは、私が持っている Person クラスと、ツリー内のオブジェクトの基にしたいものです。
public class Person{
public int id; // some identification number unique to the person
public boolean zombie; // true if the person is a zombie
public char state; // p means human, z means zombie
public ArrayList<Person> friends; // list of friends
public Person(int id, char state){
this.id = id;
this.state = state;
//this.zombie = zombie;
}
ご意見とご説明をお寄せいただきありがとうございます。大歓迎です!
以下はサンプル出力であり、ツリーの望ましい階層を示しています
P (this is Person q)
---P (this is a friend of q, say q1)
------P (this is a friend of q1)
------Z (this is another friend of q1, who is a zombie)
---Z (this is a friend of q, say q2, who is a zombie)
------Z (this is a friend of q1, who is also a zombie)
------P (this is a friend of q1, who is not a zombie)
相互リンクがないようにツリー構造を作成したいと思います。ツリー構造内の各人物は、1 つのフレンド リストにのみ存在できます。また、どのフレンド リストにも含まれない 1 人の人物が存在します (ツリーのルート)。各フレンドは 2 人のフレンドしか持てません。(これは二分木だと思います)
編集: Java が提供するツリーマップを使用できますか?