具有int节点的数学树的Java结构

时间:2012-08-22 21:10:52

标签: java tree

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

  • 所有节点都唯一 int s;
  • 树的深度由int d > 0
  • 给出
  • 对节点可以拥有的子节目数没有限制

我需要做的操作:

  • 遍历位于第一级的子项任何节点
  • 添加节点
  • 删除一个子树,即一个包含所有子节点的节点
  • 提取一个子树,即在单独的树中定位和复制(克隆)

我不需要的操作:

  • 编辑节点

属性非常适合Tree,因此可能在性能方面有一些超级实现。 XMLTree或其他什么。

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

1 个答案:

答案 0 :(得分: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);
  }
}