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

具有int节点的数学树的Java结构,java,tree,Java,Tree,在Java中,Tree是否是表示具有以下属性的树的最佳结构: 所有节点都是唯一的ints 树的深度由intd>0 一个节点可以有多少子节点没有限制 我需要执行的操作: 仅迭代位于任何节点的第一层的子节点 添加节点 删除子树,即一个节点及其所有子节点一直向下 提取子树,即在单独的树中定位和复制(克隆) 我不需要的操作: 编辑节点 属性非常适合于树,因此可能在性能方面有一些超级实现XMLTree或其他任何内容 目前,我正在使用数组数组来存储元素,但我发现这并不微妙。这里是一个可以用来形成

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

  • 所有节点都是唯一的
    int
    s
  • 树的深度由
    intd>0
  • 一个节点可以有多少子节点没有限制
我需要执行的操作:

  • 仅迭代位于任何节点的第一层的子节点
  • 添加节点
  • 删除子树,即一个节点及其所有子节点一直向下
  • 提取子树,即在单独的树中定位和复制(克隆)
我不需要的操作:

  • 编辑节点
属性非常适合于
,因此可能在性能方面有一些超级实现<代码>XMLTree或其他任何内容


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

这里是一个可以用来形成树结构的
节点
类的基本示例。以深度优先或广度优先的方式在所有子节点上迭代的编写方法有些复杂

作为替代,您可以考虑使用这些方法来免费提供(,)。此节点实现还允许您通过调用来附加用户对象。缺点是实现可能不像编写自己的结构那样紧凑,因此它实际上取决于树的大小

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);
  }
}
公共类节点{
私有最终整数值;
私人最终名单儿童;
公共节点(int值){
这个值=值;
this.children=newlinkedlist();
}
public int getValue(){
返回值;
}

公共列表有关插入/删除/搜索操作的任何限制?重复条目如何?我可能会创建一个类来表示一个节点。该类将有一个带有值的int字段和子节点的
ArrayList
。有一些图形库可以为您执行此操作,但除非您需要担心性能或者多线程,它可能是你自己运行的最快的方法。我会不断地插入/删除/搜索。实际上,没有什么需要搜索的,我通过节点的唯一表示预先知道节点,只需从树及其子节点中获取它们。没有重复。我担心性能。这可能仍然是最简单的方法。忘记提及,now编辑了关于迭代的内容-仅限树下一级的子级。