title: How do I determine which kind of tree data structure to choose?
body: <p>Ok, so this is something that's always bothered me.  The tree data structures I know of are:</p>
  
  <ul>
  <li>Unbalanced binary trees</li>
  <li>AVL trees</li>
  <li>Red-black trees</li>
  <li>2-3 trees</li>
  <li>B-trees</li>
  <li>B*-trees</li>
  <li>Tries</li>
  <li>Heaps</li>
  </ul>
  
  <p>How do I determine what kind of tree is the best tool for the job?  Obviously heaps are canonically used to form priority queues.  But the rest of them just seem to be different ways of doing the same thing.  Is there any way to choose the best one for the job?</p>