2016-12-06 25 views
2

誰かが標準、テスト済み、Javaでの簡単なツリー実装に私を指摘できますか?たとえば、すべてのStackOverflowはJavaツリーのデータ構造の実装

を、このトピックにJavaの木のリードで検索 Tree implementation in Java (root, parents and children)

が、その後、あなたはそのトピックで受け入れの回答が動作しないことを発見し、オーバーフロー例外(https://stackoverflow.com/a/40622616/1005607)を与える - 非常に危険な場合は、誰かがその回答を削除したり編集したり、少なくともそれを動かすべきです。

あり、いくつかの非StackOverflowのリソースがありますが、再び私はそれが難しい我々はすぐに行くことができる何の再利用可能な堅牢な実装はありません信じることを見つけ、彼らはどのように信頼性の高い http://programtalk.com/java/java-tree-implementation/

を知りません。ノードは、その親子を追跡する必要があります。エラーはないはずです。

+0

私はマーク・アレン・ウェイスJavaでと、アルゴリズムの分析データ構造を使用するには、ツリーセクションでツリーの素敵な実装があります –

答えて

2

あなたが示した質問の問題(https://stackoverflow.com/a/40622616/1005607)は、addChildsetParentのメソッドが無限ループで互いに呼び出すことです。あなたは次のようにそれを修正する必要があり

public void setParent(Node<T> parent) { 
    parent.addChild(this); // Call addChild 
    this.parent = parent; 
} 

public void addChild(Node<T> child) { 
    child.setParent(this); // Call setParent 
    this.children.add(child); 
} 

// Make this method private 
private void setParent(Node<T> parent) { 
    // Remove this line to prevent the loop 
    // parent.addChild(this); 
    this.parent = parent; 
} 

public void addChild(Node<T> child) { 
    child.setParent(this); 
    this.children.add(child); 
}