I require a tree / directed acyclic graph implementation something like this:
public class TreeNode {
private K key; // \'key\' for this node
I'd say it's better to roll out your own implementation (besides, you've already got the interface nicely thought out). What are the operations you are planning to perform on this tree anyway? You'd probably want to design your API around the things you want... direct access to individual nodes by key/value? types of traversals? add/remove operations?