If you are utilizing the new TFS 2010 branch folder feature you can easily list the branch hierarchy in source control using the code below:

   1: using System;
   2: using Microsoft.TeamFoundation.Client;
   3: using Microsoft.TeamFoundation.VersionControl.Client;
   4:  
   5: namespace DisplayAllBranches
   6: {
   7:     class Program
   8:     {
   9:         static void Main(string[] args)
  10:         {
  11:             string serverName = @"http://[SERVERNAME]:8080/tfs";
  12:  
  13:             //1.Construct the server object
  14:             TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(serverName));
  15:             VersionControlServer vcs = tfs.GetService<VersionControlServer>();
  16:  
  17:             //2.Query all root branches
  18:             BranchObject[] bos = vcs.QueryRootBranchObjects(RecursionType.OneLevel);
  19:  
  20:             //3.Display all the root branches
  21:             Array.ForEach(bos, (bo) => DisplayAllBranches(bo, vcs));
  22:             Console.ReadKey();
  23:         }
  24:  
  25:         private static void DisplayAllBranches(BranchObject bo, VersionControlServer vcs)
  26:         {
  27:             //0.Prepare display indentation
  28:             for (int tabcounter = 0; tabcounter < recursionlevel; tabcounter++)
  29:                 Console.Write("\t");
  30:  
  31:             //1.Display the current branch
  32:             Console.WriteLine(string.Format("{0}", bo.Properties.RootItem.Item));
  33:  
  34:             //2.Query all child branches (one level deep)
  35:             BranchObject[] childBos = vcs.QueryBranchObjects(bo.Properties.RootItem, RecursionType.OneLevel);
  36:  
  37:             //3.Display all children recursively
  38:             recursionlevel++;
  39:             foreach (BranchObject child in childBos)
  40:             {
  41:                 if (child.Properties.RootItem.Item == bo.Properties.RootItem.Item)
  42:                     continue;
  43:  
  44:                 DisplayAllBranches(child, vcs);
  45:             }
  46:             recursionlevel--;
  47:         }
  48:  
  49:         private static int recursionlevel = 0;
  50:     }
  51: }

The result of this code will be something like this:

blog

for a hierarchy like this:

blog3