<p>I require a tree / directed acyclic graph implementation something like this:</p>

<pre><code>public class TreeNode&lt;K, V&gt; {
    private K key; // 'key' for this node, always present
    private V value; // 'value' for this node, doesn't have to be set

    private TreeNode&lt;K, V&gt; parent;
    private Set&lt;TreeNode&lt;K, V&gt;&gt; children; 
}
</code></pre>

<ul>
<li>There is no sorting of any kind. </li>
<li>The <code>TreeNode</code> is just a wrapper around the key and a possible value (nodes don't have to have values set).</li>
<li>I require links to both the parent and the children.</li>
</ul>

<p>Is there anything out there in the standard APIs or Commons etc that will do this for me?</p>

<p>I don't mind writing it myself (and I'm certainly <strong>not</strong> asking you folks to) I just don't want to re-invent the wheel.</p>

There doesn't seem to be anything of the kind. I asked
a similar question
last week and ended up implementing my own tree.  My implementation was very similar to what you're proposing:
```
```
public class TreeNode<T>
{
    private LinkedList<TreeNode<T>> children = new LinkedList<TreeNode<T>>();
    public T value { get; set; }

    public TreeNode(T value)
    {
        this.value = value;
    }
    public LinkedList<TreeNode<T>> GetChildren()
    {
        return children;
    }
}
```
```
You will have to add a link back to the parent(s).