Categories
discuss

Tree (directed acyclic graph) implementation

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

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

    private TreeNode<K, V> parent;
    private Set<TreeNode<K, V>> children; 
}
  • There is no sorting of any kind.
  • The TreeNode is just a wrapper around the key and a possible value (nodes don’t have to have values set).
  • I require links to both the parent and the children.

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

I don’t mind writing it myself (and I’m certainly not asking you folks to) I just don’t want to re-invent the wheel.

Answer

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).

Categories
discuss

Unobtrusive JavaScript: Source: stackoverflow
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Privacy Policy, and Copyright Policy. Content is available under CC BY-SA 3.0 unless otherwise noted. The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 © No Copyrights, All Questions are retrived from public domain..