0

Java では、Treeこのようなプロパティを持つツリーを表すのに最適な構造は次のとおりです。

  • すべてのノードは一意 intです。
  • 木の深さはint d > 0
  • ノードが持つことができる子の数に制限はありません

私がする必要がある操作:

  • 任意のノードの最初のレベルにある子のみを反復します
  • ノードを追加
  • サブツリーを削除します。これは、すべての子が完全に下にあるノードです
  • サブツリーを抽出します。つまり、別のツリーに配置してコピー (クローン) します。

必要のない操作:

  • ノードを編集

プロパティはTree. XMLTreeまたは何でも。

現在、要素を格納するために配列の配列を使用していますが、微妙ではありません。

4

1 に答える 1

2

Nodeこれは、ツリー構造を形成するために使用できるクラスの基本的な例です。深さ優先または幅優先の方法ですべての子ノードを反復処理するメソッドの記述には、いくらかの複雑さがあります。

DefaultMutableTreeNode別の方法として、これらのメソッドを無料で提供するを使用することを検討できます( depthFirstEnumeration()breadthFirstEnumeration())。このノードの実装では、を呼び出してユーザーオブジェクトをアタッチすることもできますsetUserObject(Object)。欠点は、実装が独自の構造を作成するほどコンパクトではない可能性があるため、実際にはツリーのサイズに依存することです。

public class Node {
  private final int value;
  private final List<Node> children;

  public Node(int value) {
    this.value = value;
    this.children = new LinkedList<Node>();
  }

  public int getValue() {
    return value;
  }

  public List<? extends Node> getChildren() {
    return Collections.unmodifiableList(children);
  }

  public void addChild(Node child) { 
    children.add(child);
  }
}
于 2012-08-22T21:23:06.853 に答える