title: Build a simple, high performance Tree Data Structure in c#
body: <p>I need to create a product catalog, in tree type.</p>
  
  <p>every tree node presents by a ID(string), the functions on the tree data only 2:</p>
  
  <ol>
  <li><code>getChild(string ID)</code>, give a ID, get children (no need include childrens'
  children), if ID is null, get all root nodes </li>
  <li><code>getParent(string ID)</code>, return     parent ID if have, or null if is root</li>
  </ol>
  
  <p>Since once the tree decided, will not change, so I think put all code in static will be best.
  So I start to try use Dictionary</p>
  
  <pre><code>"id": {parent:ID, child:[id2, id3, id4....]}
  </code></pre>
  
  <p>Since theres about 1000+ catalog, I found I quickly mess myself up, lots of mistake in the static data, and make final result on usable. Also, now I only wrote dozens and the code is looking like mess.</p>
  
  <p>Please advice a way create this simple catalog tree with high performance. Thanks</p>