0

在 Java 中,Tree表示具有以下属性的树的最佳结构是:

  • 所有节点都是唯一 int的;
  • 树的深度由下式给出int d > 0
  • 一个节点可以有多少个孩子没有限制

我需要做的操作:

  • 仅遍历位于任何节点下一级的子节点
  • 添加节点
  • 删除一个子树,它是一个节点,它的所有子节点一直向下
  • 提取子树,即在单独的树中定位和复制(克隆)

我不需要的操作:

  • 编辑节点

属性非常适合 a Tree,因此在性能方面可能有一些超级实现可用。XMLTree管他呢。

目前我正在使用数组来存储元素,但我发现它并不微妙。

4

1 回答 1

2

Node这是可用于形成树结构的类的基本示例。编写以深度优先或广度优先方式遍历所有子节点的方法有一些复杂性。

作为替代方案,您可以考虑使用DefaultMutableTreeNodewhich 免费提供这些方法 ( 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 回答