树(有向无环图)实现

我需要一个这样的树/有向无环图实现:

public class TreeNode { private K key; // 'key' for this node, always present private V value; // 'value' for this node, doesn't have to be set private TreeNode parent; private Set<TreeNode> children; } 
  • 没有任何类型的分类。
  • TreeNode只是键的包装和可能的值(节点不必设置值)。
  • 我需要父母和孩子的链接。

标准API或Commons等中有什么东西可以帮我吗?

我不介意自己写(我当然不是要求大家)我只是不想重新发明轮子。

似乎没有任何类似的东西。 上周我问了一个类似的问题,最后实现了我自己的树。 我的实现与你提议的非常类似:

 public class TreeNode { private LinkedList> children = new LinkedList>(); public T value { get; set; } public TreeNode(T value) { this.value = value; } public LinkedList> GetChildren() { return children; } } 

您必须将链接添加回父级。

还有http://www.jgrapht.org ,其中包含根据LGPL许可的软件。 我必须警告你,实施你自己的危险充满了危险。 如果您计划在结构上使用递归(这是一个图形),您必须确保它是非循环的,否则您将遇到无限循环问题。 最好在他们已经处理过这些问题的地方使用第三方代码。

我说最好推出自己的实现(此外,你已经很好地考虑了界面)。 无论如何,您计划在此树上执行​​哪些操作? 你可能想围绕你想要的东西设计你的API …按键/值直接访问各个节点? 遍历的类型? 添加/删除操作?

如果您正在寻找其他图形function, 那么JDigraph的Digraph类应符合要求。