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

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

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

  • 迭代位于任何节点上的第一级儿童
  • 添加节点
  • 删除一个子树,这是一个包含所有子节点的节点
  • 提取一个子树,即在单独的树中定位并复制(克隆)
  • 我不需要的操作:

  • 编辑节点
  • 属性对于Tree是完美的,所以也许在性能方面有一些超级实现。 XMLTree或其他。

    目前我使用一个数组数组来存储元素,但我觉得它不是微妙的。


    以下是可用于形成树结构的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);
      }
    }
    
    链接地址: http://www.djcxy.com/p/39875.html

    上一篇: Java structure for mathematical tree with int nodes

    下一篇: Example Applications of Some Data Structures