title: Multi-Root Tree Structure
body: <p>I have a data such that there are many parents each with 0-n children where each child can have 0-n nodes.  Each node has a unique identifier (key) Ultimately, the parents are not connected to each other.  It seems like this would be a list of trees, however that seems imprecise.  I was thinking of joining them with a dummy root.</p>
  
  <p>I need to be able to assembly a list of nodes that occur:  </p>
  
  <ul>
  <li>from any given node down (children)</li>
  <li>from any given node down (children) then up to the root (up to the specific parent)</li>
  <li>the top level parent of any given node (in an O(n) operation)</li>
  <li>the level of the child in the tree (in an O(n) operation)</li>
  </ul>
  
  <p>The structure will contain 300,000 nodes.</p>
  
  <p>I was thinking perhaps I could implement a List of Trees and then also maintain a hash lookup structure that will reference a specific key value to provide me with a node as a starting point.</p>
  
  <p>Is this a logical structure? Is there a better way to handle it?  It seems crude to me.</p>